我的项目有一个名为 oops.aspx 的错误页面。我们在 global.asax
中有以下代码:
protected void Application_Error(object sender, EventArgs e)
{
Server.Transfer("~/oops.aspx", true);
}
oops.aspx
能够提取错误,向服务器生成一封漂亮的电子邮件,并向用户显示错误消息。
Server.Transfer
的使用保留了 URL、表单信息和其他有用的故障排除信息。在 oops.aspx 中的某一时刻,在撰写电子邮件时,我抓取了 Request.RawUrl 并将其包含在电子邮件中。这是导致错误的页面的 URL(带有查询字符串参数)。
我们在 web.config 中也有这个:
<customErrors mode="On" defaultRedirect="oops.aspx"></customErrors>
当系统因为基于此的错误而重定向时,它会重定向到 /oops.aspx?aspxerrorpath=/Clients/EditClient.aspx
(有时使用/,有时使用 %2f 路径分隔符) . Querystring 和 Exception 信息丢失,因此 oops.aspx 生成的电子邮件和消息是稀疏的,并没有说明发生了什么。
我最近遇到了很多第二种错误。错误以小串形式出现,几分钟内出现几个错误,然后几个小时都没有。它们发生在整个站点(包括 WebResource.axd
等),这让我认为这不是我们站点中的特定错误,而是发生在较低级别的事情,例如 session 服务器问题或类似的东西。
所以,尽管如此,我的实际问题是:
我在网站中遇到错误,但 global.asax 无法捕获这些错误。什么会导致此类错误,我该如何解决这些错误?
最佳答案
由于您在 web.config 中启用了自定义错误,异常将在 Application_Error 执行并将您重定向到 oops.aspx
之前被捕获。如果您不希望发生这种情况,请不要在您的 web.config 中启用自定义错误。这样,假设您已将 IIS 配置为在集成管道模式下运行应用程序池,所有错误都将通过 Application_Error
。
关于c# - Global.asax 没有捕获到错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9707094/