4

抱歉标题含糊不清,因为我真的无法简洁地解释这个问题。

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

第一次尝试加载 *.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 输出)。

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

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

4

6 回答 6

4

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

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

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

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

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

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

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

于 2011-05-24T04:48:41.007 回答
1

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

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

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

于 2009-08-06T18:21:56.120 回答
0

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

于 2009-08-06T17:47:53.007 回答
0

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

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

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

如何:处理应用程序级错误

于 2009-08-06T19:43:48.453 回答
0

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

于 2009-08-27T04:00:42.803 回答
0

您必须在 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>

我希望这有帮助!欢呼。

于 2013-09-28T10:05:20.827 回答