对于模糊的标题感到抱歉,因为我无法简洁地解释这个问题。
基本上我有Windows Server 2008 x64,IIS7,ASP.NET 2.05,我有一个在经典 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 =“内部服务器错误”,HttpSubStatus =“0”,ErrorCode =“操作标识符无效。 (0x800710dd)“,ConfigExceptionInfo =”“
在错误出现之前:
NOTIFY_MODULE_START ModuleName =“IsapiModule”,Notification =“EXECUTE_REQUEST_HANDLER”,fIsPostNotification =“false”,fIsCompletion =“false”
现在,当我将其与成功运行进行比较时,区别在于错误产生MODULE_SET_REPONSE_ERROR_STATUS,而成功运行则没有(然后继续产生正确的HTML输出)。
编辑:我拿了一个简单的应用程序并试图让它运行,我收到了同样的错误。但当apppool处于集成模式时运行良好!不幸的是,我无法将我们的应用程序迁移到集成,原因我无法指定,但我将其缩小到应用程序池。此外,我不必重新启动服务器来重新发出错误,而是回收应用程序池。
总结:
- 如下所述,事件日志中没有任何内容表示失败。我梳理了事件查看器中的所有日志
答案 0 :(得分:3)
最好的办法是在网站的IIS部分启用“失败的请求跟踪”。然后,您可以启用一些过滤器,为您提供更详细的信息。
您可以通过IIS管理器执行此操作。单击您的网站,然后在功能视图的IIS部分中,双击“失败的请求跟踪规则”。
很可能尚未启用,因此从最右边的列中选择“编辑网站跟踪”。选中“启用”复选框并记下目录。
然后,您可以在该屏幕中添加规则或转到您的应用程序,然后从那里打开“失败的请求跟踪规则”IIS功能。
再次从最右边的列中,单击“添加...”然后完成向导并设置日志记录。
加载再次抛出错误的页面。转到日志文件夹,然后双击XML文件。该目录中有一个XSL。不要核武器,因为一旦它消失了它就不会被重新创造。 :s转换后的XML将向您显示比您可能希望的更多信息。
我今天晚上用它来发现我配置的自定义错误页面使用〜/而不是“/”,导致IIS死亡。
答案 1 :(得分:0)
启动应用程序池时听起来很像。但它应该在事件查看器中记录实际错误。或者你可以关闭CustomErrors来调试它。问题是,您需要查看实际错误以找出正在发生的事情。
答案 2 :(得分:0)
当ASP.NET应用程序开始加载时,您可能会有一些代码执行时间可能太长,可能是应用程序变量太大或资源初始化。
最好的方法是设置某种ping监视器,很多ISP都提供ping监视器,可以定期监视你的html url,这可能有助于让你的应用程序保持活着!!
尝试查看asp.net应用程序的初始化过程,您可能希望增加一些超时值!!
答案 3 :(得分:0)
您的ASPX代码中是否有未处理的异常处理程序(类似Global Application_Error)?
你应该能够捕获异常并记录它,如果它来自ASPX代码(很可能)。
我之前见过这样的零星错误,我现在还记不起根本原因。
答案 4 :(得分:0)
嗯,我不知道造成这种情况的原因是干净安装了我正在使用的VM。乌拉!
答案 5 :(得分: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>
我希望这有帮助!助威。