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