其他分享
首页 > 其他分享> > 甚至触发处理异常的Application_Error

甚至触发处理异常的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触发?

解决方法:

/Dashboard/Default.aspx是否在同一服务器/应用程序中?

如果是这样,那么对该请求的处理可能会导致将由Application_Error捕获的错误.原因是通过执行GetResponse()您正在执行HTTP请求,并且调用代码上的try / catch不会处理在(可能)远程服务器上处理请求时发生的任何异常.在您的特殊情况下,远程服务器=本地服务器,但是这个想法没有改变.

标签:global-asax,exception-handling,webforms,c,application-error
来源: https://codeday.me/bug/20191201/2078347.html