【问题标题】:IIS7 is throwing a 500 error intermittently. Can anyone help me diagnose it?IIS7 间歇性地抛出 500 错误。谁能帮我诊断一下?
【发布时间】:2010-11-17 10:40:53
【问题描述】:

对不起,这个模糊的标题,因为我真的无法简洁地解释这个问题。

基本上我有 Windows Server 2008 x64、IIS7、ASP.NET 2.05,并且我有一个在 Classic AppPool 中运行的站点(不,我不能在集成中运行)。

第一次尝试加载 *.aspx 文件时(即在安装站点、重新启动服务器等之后)我收到此错误:

HTTP 错误 500.0 - 内部服务器错误
由于发生内部服务器错误,无法显示该页面。
模块:IsapiModule
通知:ExecuteRequestHandler
处理程序:PageHandlerFactory-ISAPI-2.0-64
错误代码:0x800710dd
登录方式:匿名
登录用户:匿名

处理程序是默认的 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" />

唯一要做的就是将错误通知的 Handler 部分更改为 IsapiModule。

奇怪的是,这个错误只发生在第一次(或者当服务器空闲了几个小时)。一旦我看到这个错误,如果我刷新页面,一切都会好起来的。

我什至尝试删除 web.config 文件,但完全没有任何效果。

我似乎在互联网上找不到这个问题的单一答案。

编辑:我启用了失败的请求跟踪,这就是它所显示的:

MODULE_SET_RESPONSE_ERROR_STATUS 警告 ModuleName="IsapiModule", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="500", HttpReason="Internal Server Error", HttpSubStatus="0", ErrorCode="操作标识符无效。 (0x800710dd)", ConfigExceptionInfo=""

在它显示的错误之前:

NOTIFY_MODULE_START ModuleName="IsapiModule", Notification="EXECUTE_REQUEST_HANDLER", fIsPostNotification="false", fIsCompletion="false"

现在,当我将此与成功运行进行比较时,区别在于错误会产生 MODULE_SET_REPONSE_ERROR_STATUS 而成功运行不会(然后继续产生正确的 HTML 输出)。

编辑:我使用了一个简单的应用程序并尝试运行它,但我收到了同样的错误。但是当应用程序池处于集成模式时,它运行良好!不幸的是,由于我无法指定的原因,我无法将我们的应用程序迁移到集成,但我将其缩小到应用程序池。此外,我不必重新启动服务器来重现错误,而是回收应用程序池即可。

总结:
- 如下所述,事件日志中没有任何内容表明失败。我梳理了事件查看器中的所有日志

【问题讨论】:

  • 事件日志中有什么内容吗?
  • 应用程序中是否有任何可能触发服务器 500 的错误被抛出?
  • 事件日志中没有任何内容
  • 我认为应用程序中没有任何东西可以做到这一点。毕竟它在第二次尝试时起作用

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


【解决方案1】:

最好的办法是在网站的 IIS 部分启用失败请求跟踪。然后,您可以启用一些过滤器,为您提供更详细的信息。

您可以通过 IIS 管理器执行此操作。单击您的网站,然后在功能视图的 IIS 部分中,双击“失败的请求跟踪规则”。

它很可能尚未启用,因此从最右侧的列中选择“编辑站点跟踪”。选中“启用”复选框并记下目录。

然后,您可以在该屏幕中添加规则,或者转到您的应用程序并从那里打开“失败的请求跟踪规则”IIS 功能。

再次从最右侧的列中单击“添加...”,然后通过向导并设置日志记录。

加载再次引发错误的页面。转到日志文件夹并双击 XML 文件。该目录中有一个 XSL。不要核对它,因为一旦它消失了,它就不会被重新创建。 :s 转换后的 XML 将向您显示比您希望的更多的信息。

我今天晚上刚刚用它发现了我配置的自定义错误页面使用 ~/ 而不是“/”,导致 IIS 死机。

【讨论】:

    【解决方案2】:

    当 ASP.NET 应用程序开始加载时,您可能有一些代码执行时间过长,可能是应用程序变量或资源初始化过大。

    最好的方法是设置某种 ping 监控器,许多 ISP 提供 ping 监控器,可以定期监控您的 html url,这可能有助于保持您的应用程序始终处于活动状态!

    尝试查看您的 asp.net 应用程序的初始化过程,您可能需要增加一些超时值!

    【讨论】:

    • 这发生在一个 Hello World 应用程序中,我很确定它没有很长的初始化过程。此外,页面在第二次尝试时加载正常(即使我删除了服务器的缓存以及所有临时和压缩文件)
    【解决方案3】:

    在启动应用程序池时听起来有点像。但它应该在事件查看器中记录实际错误。或者你可以关闭 CustomErrors 来调试它。问题是,您需要查看实际错误才能弄清楚发生了什么。

    【讨论】:

    • 是的,这就是问题所在。我不知道在哪里可以看到这个错误。据我所知,绝对没有任何可见的东西(除了 500 错误)
    • 哦,CustomErrors 已开启。这就是我首先得到错误信息的方式。
    【解决方案4】:

    您的 ASPX 代码中是否有未处理的异常处理程序(类似于 Global Application_Error)?

    如果异常来自 ASPX 代码,您应该能够捕获并记录它(这很有可能)。

    我以前见过这样的零星错误,我现在不记得根本原因。

    How to: Handle Application-Level Errors

    【讨论】:

      【解决方案5】:

      好吧,我不知道是什么原因造成的,但是我使用的 VM 的全新安装修复了它。万岁!

      【讨论】:

      • 您没有在原始问题中提到您在虚拟机中运行;-)
      【解决方案6】:

      您必须在 web.config 中添加此脚本:

      <system.webServer>
          <handlers>
              <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
              <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
          </handlers>
      

      我希望这会有所帮助!加油。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-20
        • 1970-01-01
        • 2021-04-19
        • 2012-01-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多