【发布时间】:2015-01-16 14:44:07
【问题描述】:
我在发布模式下为 AnyCPU 编译了 C# 中的 ASP .Net Web 应用程序(没有 MVC 或 WebForms),pdb 文件已启用并随应用程序一起部署。
当 AppPool 上的 enable 32-bit applications 具有默认值 False 时,异常的堆栈跟踪具有正确行号。
当标志设置为True 时,堆栈跟踪的行号不正确。
为了清楚起见我唯一更改的是我的 Web 应用程序的 AppPool 配置中 enable 32-bit applications 标志的值。
我在两台机器上试过这个:
- 带有 IIS 8.5.9600.16384 的 Windows 8
- 带有 IIS 7.5.7600.16385 的 Windows Server 2008 R2
在我的特殊情况下,只需重新配置 AppPool 即可(我们已经从 x86 迁移到 AnyCPU,这个过时的配置只是一个错误),但我仍然感兴趣为什么会发生这种情况? (可能是 IIS 中存在一些错误,我无法在任何地方找到提到的这种行为)。
更新:看来我已经想通了,但这是暂时的缓刑:
- 问题几乎可以肯定是由于代码优化(我编写代码的方式排除了其他选项:抖动重新排序函数。这不是编译器,因为我这样做不要在测试之间重新编译应用程序)。
- 大部分优化都是通过抖动来完成的,x86 优化比 x64 优化更激进,因此生成的代码有所不同。当 Microsoft 决定进行 x64 优化时,更激进的路线将被打破。
【问题讨论】:
标签: windows-8 iis-7.5 windows-server-2008-r2 stack-trace iis-8.5