I have some code to display a button if a URL exists:
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;
}
However, when debugging, req.getResponse() causes Application_Error to fire. I checked the exception being caught here and it is a System.Net.WebException. My understanding was that Application_Error is fired for unhandled exceptions.
If I change the code to force an exception as follows:
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;
}
then Application_Error is not fired, which is good. Is there something particular about handling errors with GetResponse() that always causes Application_Error to fire, even if the exception is handled?
In Application_Error check the exception:
var exception = Server.GetLastError();
It is impossible that Application_Error is fired with this code. Your exception must be after this try/catch Block.
Also try to Clean and Rebuild your solution, or force the Designer File to get recreated (Change something on aspx file).
I tested your code on different ASP.NET Version, even on MVC3/MVC4 Environment and Application_Error is never fired!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With