如果 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/