为什么Asp.net 5(DNX)在IIS 7.5上会导致w3wp.exe崩溃?

4
我的团队的Asp.net 5 web应用程序(1.0.0-rc1-update1)在IIS 7.5上(Windows Server 2008 R2)重新启动IIS时和两个负载均衡实例的正常运行期间都会出现w3wp.exe崩溃。

似乎与以下github问题中相同的错误相关。错误和故障信息几乎相同:https://github.com/aspnet/IISIntegration/issues/35

'w3wp.exe' (Win32): Loaded 'C:\Windows\System32\apphelp.dll'. Symbols loaded.
The thread 0x6f54 has exited with code 0 (0x0).
Unhandled exception at 0x000000007717298A (ntdll.dll) in w3wp.exe: 0xC000070A: Status 0x (parameters: 0xFFFFFFFFC0000008, 0x00000000000002F8, 0x00000000003E59F0, 0x000000000038A280, 0x000007FEF4CF88F4).

Exception thrown at 0x000007FEF4CF88F4 in w3wp.exe: 0xC0000005: Access violation executing location 0x000007FEF4CF88F4.

Unhandled exception at 0x000007FEF4CF88F4 in w3wp.exe: 0xC0000005: Access violation executing location 0x000007FEF4CF88F4.

The program '[4540] w3wp.exe' has exited with code 0 (0x0).

这个问题在我们使用Windows 2012 R2的IIS 8上没有出现。看起来这是IIS 7.5与8之间的HttpPlatformHandler或DNX稳定性问题。其他人是否遇到了这个问题?有没有比升级Windows/IIS版本更简单的解决方法?它似乎不是由我们的应用程序代码确定性触发的。Github问题已经有一段时间没有更新了,不幸的是我们可能没有能力进行崩溃转储分析或进程调试。
关于HttpPlatform日志:
我使用webconfig设置打开了HttpPlatform日志:
<httpPlatform processPath="..\approot\web.cmd" arguments="" stdoutLogEnabled="true" stdoutLogFile="..\logs\stdout.log" startupTimeLimit="3600"></httpPlatform>

在初始化过程中,启动程序通常会进行日志记录,但是当崩溃出现时,不会记录错误日志:

Hosting environment: XXXXXX
Now listening on: http://localhost:XXXX
Application started. Press Ctrl+C to shut down.

1
HttpPlatformHandler曾经只支持IIS 8+,所以我猜他们用来支持IIS 7.5的hack还不够可靠。你需要向微软报告并查看是否可以提供更新。在这种情况下,在GitHub上留下评论,告诉他们你遇到了类似的问题,如果越来越多的用户报告此问题,他们应该采取一些行动。 - Lex Li
我同意Lex Li的观点,但为了完整起见,你能否在web.config中的httpPlatform标签中添加以下内容:stdoutLogEnabled="true" stdoutLogFile="..\logs\stdout.log"? 仍然应该输出日志文件。并将其内容发布在这里? - Danny van der Kraan
更新了 httpPlatform 日志开启后的结果。 - Ryan Jones
我投票关闭此问题,原因是“无法再现的问题”。 - Set
是的,这个问题很可能会被关闭,因为它不会在预核心版本中得到修复。 - Ryan Jones
1个回答

1
我遇到了同样的问题,它来自于 aspnetcore.dll 中的一个 bug (https://github.com/aspnet/AspNetCoreModule),发生在某些 Windows(例如 Windows 7)和 IIS(例如 IIS 7.5)的组合中。你可以在 c:\windows\systemXXX 中找到这个模块。
当我从 GitHub 的 dev 分支获取最新版本时,问题已经被修复了。我相信修复的内容包含在变更列表中:https://github.com/aspnet/AspNetCoreModule/pull/59 这个版本还没有正式发布,也没有打包到目前为止的最新版本 7.1.1971 的 DLL 中。

这个版本已经发布:https://github.com/aspnet/AspNetCoreModule/releases/tag/1.0.1972(产品版本为7.1.1972)。我正在等待一个包含这个新版本的新的 .Net Core 运行时。 - Daboul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接