我有一个使用自定义错误的ASP.NET应用程序。有一个错误发生,我似乎无法获得有关信息。发生错误时,它会触发自定义错误页面,但由于某种原因,它不会触发Page_Error或Application_Error。如果我完全关闭CustomErrors,则完全没有任何反馈。我迄今为止唯一得到的反馈是重定向到自定义错误页面。如何捕获触发自定义错误页面的ASP.NET错误,但不是Application_Error
场景:ASP.NET WebForms应用程序。其中一个页面有一个带有提交按钮的UpdatePanel。该页面正常工作。但是如果我走开一段时间(似乎是30-60分钟),然后回来点击提交按钮,什么都不会发生;没有错误,页面没有响应 - 什么都没有。在调试器中运行时,我一直无法实现这一点;它只发生在IIS(7.5)中时。 [我见过有关此问题的其他SO帖子,但没有任何建议适用于我。]
发生错误时,使用CustomErrors = On或RemoteOnly,重定向到自定义错误页面,并且使用RemoteOnly,从服务器,我根本没有得到任何反馈,类似于与customerrors = off的远程连接。我真的很希望YSOD错误页面。
我试图通过将错误记录到数据库来捕获Page_Error中的错误,但那也不起作用。我知道Page_Error和DB部分正在工作,因为如果我改变后面的提交代码以除以零来分隔,错误就会记录在数据库中。此外,零差错将显示给客户端,客户=关闭,并在它上面将显示自定义错误页面。但是除去零除错误,然后等待30分钟左右再次尝试,即使它重定向到自定义错误页面,Page_Error代码也没有被击中。然后,我尝试将Page_Error中的代码移动到Application_Error,但同样的事情发生。由错误强制划分的作品,但这看似超时相关的错误并没有。
那么,是否有某些错误仍然可以触发重定向到自定义错误页面,但不会触发Application_Error事件?
我在AJAX更新中调用的代码中有类似的错误。 Elmah能够捕捉到这个例外。我相信它也可以使用ASP.NET Health Monitoring进行查看。最后,我实际上收到了AJAX错误和异常消息。 –
如果错误在IIS到达ASP.NET执行管道之前由IIS处理,则无法在代码中捕获它。是否有可能IIS进程被回收或会话超时?在IIS中启用失败的请求跟踪,可能会为您提供有关失败的更多信息。 – Sergey