c# - Application_Error 即使处理异常也会触发

标签 c# exception webforms global-asax application-error

如果 URL 存在,我有一些代码可以显示按钮:

try
{
    string dashboardURL = Config.RootUrl + "/Dashboard/Default.aspx";
    WebRequest req = WebRequest.Create(dashboardURL);
    WebResponse response = req.GetResponse();
    btnDashboard.Visible = true;
}
catch (Exception)
{
    btnDashboard.Visible = false;
}

但是,在调试时,req.getResponse() 会导致 Application_Error 触发。我检查了这里捕获的异常,它是一个 System.Net.WebException。我的理解是 Application_Error 因未处理的异常而被触发。

如果我改变代码强制异常如下:

try
{
    string dashboardURL = Config.RootUrl + "/Dashboard/Default.aspx";
    WebRequest req = WebRequest.Create(dashboardURL);

    int j = 0;
    int i = 1 / j;

    WebResponse response = req.GetResponse();
    btnDashboard.Visible = true;
}
catch (Exception)
{
    btnDashboard.Visible = false;
}

然后 Application_Error 没有被触发,这很好。使用 GetResponse() 处理错误是否有什么特别之处总是导致 Application_Error 触发,即使异常已被处理?

最佳答案

在 Application_Error 检查异常:

var exception = Server.GetLastError();

用这段代码不可能触发 Application_Error。 您的异常必须在此 try/catch block 之后。

同时尝试清理并重建您的解决方案,或强制重新创 build 计器文件(更改 aspx 文件中的内容)。

我在不同的 ASP.NET 版本上测试了您的代码,即使在 MVC3/MVC4 环境中,也从未触发过 Application_Error!

关于c# - Application_Error 即使处理异常也会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11326192/

相关文章:

带有 IE11 的 ASP.NET WebForms 4.0 站点不会在 Windows Server 2003 上为 PageRequestManager 加载 ScriptResource

c# - 我的排序有什么问题?

java - 是否可以在外部 JAR 中的方法上使用 "throws"

java - 我在线程 "main"org.testng.TestNGException : Cannot load class from file while running a test 中收到错误 Exception

java - 如何忽略空的EditText?

asp.net - 以 kwargs 为单位的动态值

c# - 尝试查看数据时出现数据库错误

c# - SQL Server 数据库不会更新来自网站的信息

c# - 在 .NET 中,如何解密在 Java 中使用 PBEWithMD5AndDES 加密的值?

c# - 如何在反序列化时覆盖默认集合