asp.net 错误显示字节偏移量而不是行号,即使在调试模式下也是如此

发布于 2024-12-11 05:06:27 字数 696 浏览 0 评论 0原文

在我部署的 .NET 3.5/ASP.NET Web 应用程序中,错误堆栈跟踪始终显示本机代码的字节偏移量,而不是行号:

...
System.Linq.Enumerable.ToList(IEnumerable`1 source) +61
MyApp.prLoadData() +3931                             <--should show line number
MyApp.Page_Load(Object sender, EventArgs e) +1378    <--should show line number
System.Web.UI.Control.OnLoad(EventArgs e) +99
...

我已经彻底检查过的事情:

  • 应用程序二进制文件是在调试模式下编译的。
  • 我将“生成调试信息”设置为“完整”
  • 应用程序 pdb 文件部署到 bin 目录,并具有与 dll 文件相同的创建时间戳。
  • 在 web.config 中设置compilation="true" 没有什么区别。
  • 取消选中“启用优化”没有什么区别。

该特定服务器归 IT 部门所有,我无权访问它,也无权了解机器级别覆盖。尽管如此,我还是希望 ASP.NET 使用 pdb 文件,但它没有这样做。

有谁知道这是怎么回事?提前致谢。

In my deployed .NET 3.5/ASP.NET web application, error stack traces always show byte offsets to native code and not line numbers:

...
System.Linq.Enumerable.ToList(IEnumerable`1 source) +61
MyApp.prLoadData() +3931                             <--should show line number
MyApp.Page_Load(Object sender, EventArgs e) +1378    <--should show line number
System.Web.UI.Control.OnLoad(EventArgs e) +99
...

Things I've already thoroughly checked:

  • The application binary is compiled in debug mode.
  • I have "Generate Debug Info" set to "Full"
  • The application pdb file is deployed to the bin directory and has the same creation timestamp as the dll file.
  • Setting compilation="true" in web.config makes no difference.
  • Unchecking "Enable Optimizations" makes no difference.

This particular server is owned by the IT department and I have no access to it, nor any knowledge of machine level overrides. Still, I would have expected ASP.NET to use the pdb files, but it isn't doing it.

Does anyone know what's going on here? Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小苏打饼 2024-12-18 05:06:27

好吧,经过大量研究,我在这里找到了答案: 即使 pdb 存在,IIS 也没有在堆栈跟踪中给出行号。

为了方便起见,我将在这里总结一下答案。如果您的 web.config 文件中有

<identity impersonate="true" />

此内容,则会禁用堆栈跟踪中的行号(除非您授予模拟用户调试权限)。我把它拿出来,现在我得到了行号。

只是向您展示,您用来表达问题的词语确实会影响您是否与现有已回答的问题在完全相同的事情上匹配!

Well, after a lot of research, I found the answer here on SO: IIS not giving line numbers in stack trace even though pdb present.

For convenience, I'll summarize the answer here. If you have

<identity impersonate="true" />

in your web.config file, this disables line numbers in stack tracing (unless you grant the impersonated user Debug rights). I took that out and now I get line numbers.

Just goes to show you that the words you use to phrase the problem can really make a difference in whether you match an existing answered question on the exact same thing!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文