asp.net - IIS7 间歇性地抛出 500 错误。谁能帮我诊断一下吗?

标签 asp.net iis-7 asp.net-2.0 isapi

抱歉标题含糊,因为我实在无法简洁地解释这个问题。

基本上,我有 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/

相关文章:

jquery PageMethod 说该方法不存在

asp.net - IIS7、SSL 和 "The page was not displayed because the request entity is too large."

c# - Web 服务客户端和压缩

asp.net - ASP.NET中是否有任何 native 方法来执行 "success message"?

c# - '<Module>' 的类型初始值设定项抛出异常并且算术运算导致溢出

c# - 如何设置 if checkbox checked 语句?

c# - 不完整的视频流式传输到移动浏览器 - HTTP header

c# - 实现插件架构 - 动态 DLL 加载

model-view-controller - IIS7 MVC 部署 - 在某些操作中找不到 404

css - asp.net 元素符号列表和 css 菜单