c# - Global.asax 没有捕获到错误?

标签 c# asp.net error-handling global-asax

我的项目有一个名为 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/

相关文章:

c# - .NET 执行超时在 MVC Web 项目中不生效

bash - 循环让 youtube-dl 下载其中一种格式(取决于错误)

c# - 最小起订量 - 如何验证静态类调用和委托(delegate)?

c# - Azure Git 部署找不到文件 [Project].dll.licenses 失败

c# - 我怎样才能打开IE窗口最大化c#

c# - 从 Controller 运行种子方法

c# - SQL 数据库 VS。多个平面文件(数以千计的小型 CSV)

c# - 如何修复 Viewstate 中表的序列化?

php - 如何通过phplint正确处理PHP中的错误

.net - 我应该打印异常堆栈跟踪吗?