抱歉标题含糊,因为我实在无法简洁地解释这个问题。
基本上,我有 Windows Server 2008 x64、IIS7、ASP.NET 2.05,并且我有一个在经典 AppPool 中运行的网站(并且我无法在集成中运行)。
第一次尝试加载 *.aspx 文件时(即安装站点、重新启动服务器等后),我收到此错误:
HTTP Error 500.0 - Internal Server Error
The page cannot be displayed because an internal server error has occurred.
Module: IsapiModule
Notification: ExecuteRequestHandler
Handler: PageHandlerFactory-ISAPI-2.0-64
Error Code: 0x800710dd
Logon Method: Anonymous
Logon User: Anonymous
处理程序是默认的 IIS7 处理程序:
<add name="PageHandlerFactory-ISAPI-2.0-64" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
我什至尝试添加我自己的 aspx 处理程序,如下所示:
<add name="aspx" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
唯一做的就是将错误通知的处理程序部分更改为 IsapiModule。
奇怪的是,这个错误只在第一次发生(或者当服务器空闲了几个小时时)。当我看到这个错误时,如果我刷新页面,一切都会恢复正常。
我什至尝试删除 web.config 文件,但毫无效果。
我似乎无法在互联网上找到此问题的单一答案。
编辑:我启用了失败请求跟踪,其显示内容如下:
MODULE_SET_RESPONSE_ERROR_STATUS Warning ModuleName="IsapiModule", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="500", HttpReason="Internal Server Error", HttpSubStatus="0", ErrorCode="The operation identifier is not valid. (0x800710dd)", ConfigExceptionInfo=""
就在它显示的错误之前:
NOTIFY_MODULE_START ModuleName="IsapiModule", Notification="EXECUTE_REQUEST_HANDLER", fIsPostNotification="false", fIsCompletion="false"
现在,当我将其与成功运行进行比较时,区别在于错误会产生 MODULE_SET_REPONSE_ERROR_STATUS,而成功运行则不会(然后继续生成正确的 HTML 输出)。
编辑:我使用了一个简单的应用程序并尝试运行它,但收到了相同的错误。但是当应用程序池处于集成模式时,它运行良好!不幸的是,由于我无法指定的原因,我无法将我们的应用程序迁移到集成,但我将其范围缩小到应用程序池。另外,我不必重新启动服务器来重现错误,而是回收应用程序池即可。
摘要:
- 如下所述,事件日志中没有任何内容表明失败。我梳理了事件查看器中的所有日志
最佳答案
最好的办法是在网站的 IIS 部分启用失败请求跟踪。然后,您可以启用一些过滤器,为您提供更详细的信息。
您可以通过 IIS 管理器执行此操作。单击您的网站,然后在功能 View 的 IIS 部分中,双击“失败请求跟踪规则”。
它很可能尚未启用,因此从最右边的列中选择“编辑站点跟踪”。选中“启用”复选框并记下该目录。
然后,您可以在该屏幕中添加规则,或者转到您的应用程序并从那里打开“失败请求跟踪规则”IIS 功能。
再次从最右边的列中单击“添加...”,然后完成向导并设置日志记录。
加载再次引发错误的页面。转到日志记录文件夹并双击 XML 文件。该目录中有一个 XSL。不要用核武器摧毁它,因为一旦它消失了,它就不会被重新创建。 :s 转换后的 XML 将向您显示比您希望的更多的信息。
我今天晚上就用它来发现我配置的自定义错误页面使用 ~/而不是“/”,导致 IIS 死机。
关于asp.net - IIS7 间歇性地抛出 500 错误。谁能帮我诊断一下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1240401/