尽管包含PDB文件,但在堆栈跟踪事件中没有行号
这让我感到非常紧张。我使用VS 2008实现了带有C#的Web服务。我在IIS上发布它。我修改了发布版本,以便将pdb文件与dll一起复制到inetpub上的目标目录中。尽管包含PDB文件,但在堆栈跟踪事件中没有行号
另外web.config文件的debug = true。
然后我调用一个引发异常的Web服务。堆栈跟踪不包含行号。我不知道我在这里错过了什么想法?
附加信息: 如果我运行使用VS内置的Web服务器的Web应用程序,它的工作原理和我在堆栈跟踪获得的行号。但是,如果我复制VS内置web服务器使用的相同文件(pdb和dll)到IIS,仍然在堆栈跟踪中缺少行号。
似乎有什么与忽略pdb文件的IIS有关!
更新 当我发布到IIS时,所有的pdb文件都发布在bin目录下,一切都很正常。但是当我到与我的项目相关的特定目录下的“C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files”时,我可以看到程序集(.dll)文件都在那里,但没有pdb文件。 但是,如果我使用VS内置的Web服务器运行项目,则不会发生这种情况。 因此,如果我手动将pdb文件复制到临时文件夹,我可以看到行号。
任何想法为什么pdb文件没有复制到临时文件夹?
顺便说一句,当我附加到工作进程,我可以看到它说符号加载!
也许你发布到服务器具有<deployment retail="true" />
设置在系统machine.config
文件配置为:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG
欲了解更多信息,请参阅:
ASP.NET configuration - deployment Element (ASP.NET Settings Schema)
只是一个想法。
我检查了该文件,并且该文件中没有
在上述链接的帖子评论http://*.com/questions/2673623/iis-not-giving-line-numbers-in-stack-trace-even-though-pdb-present/2673642#2673642,用户@Graeme说如果你这样做,它会完全关闭堆栈跟踪,而不仅仅是行号。 – 2011-10-21 13:05:07
使用VS或windbg附加到工作进程并查看它是否能够找到您的pdb以及它是否与您的程序集匹配?
另一个常见的原因是你实际上使用发布dll [已优化]。我怀疑这是什么与IIS有关。
.pdb文件可以与“Release”或优化的DLL一起使用,没有问题。我做了很多次。 – 2015-07-13 20:47:07
不知道这是否会帮助,但在我的VS2008 C#项目属性,构建选项卡下,有一个高级按钮,我必须设置调试信息为“全”或“PDB-只有”
我这是同样的问题,并试图在阳光下尝试修复它。直到我在这个类似的问题中找到了可接受的答案:IIS not giving line numbers in stack trace even though pdb present。
原来使用模拟与web.config中:
<identity impersonate="true" />
引起堆栈跟踪的行号的损失。我拿出条目并将行号返回,放回原处并在几个小时后(Kerberos票证刷新?)行号再次消失。
不知道为什么冒充影响堆栈跟踪,但它不 - 会很高兴有人确认/解释这个...
我需要冒充被打开我的大多数网站(和那些网站有行号,去图),所以我禁用了这个特定的网站,并得到了我的行号!
这是唯一适用于我的解决方案。我希望“impersonate = true”不是我的网站所需要的。 – Arvin 2012-03-27 04:47:46
你使用WCF来调用该webservice? – 2010-02-04 23:54:21
不,它是asmx web服务 – kaptan 2010-02-05 01:05:52
[IIS即使pdb存在,但没有给出堆栈跟踪中的行号]的可能重复(http://*.com/questions/2673623/iis-not-giving-line-numbers-in- stack-trace-even-though-pdb-present) – 2014-04-07 16:03:40