Solved

IIS 7 404 Error Overrides Global Application_Error Handler

Posted on 2011-02-22
7
2,085 Views
Last Modified: 2012-05-11
I am having a bit of trouble with Custom Error handling through the Global.aspx event handler Application_Error and IIS 7.  The 404 custom error handling works fine in the following situation.

http://www.mysite.com/test.aspx

However, both of the following would bypass the Application_Error handler in Global.aspx and
invoke the IIS error handler:

http://www.mysite.com/test

http://www.mysite.com/test.test

Any help would be appreciated,

TIA
0
Comment
Question by:mgabr123
  • 3
  • 2
7 Comments
 
LVL 9

Expert Comment

by:rawinnlnx9
ID: 34956073
Check for the properties of this section of your web.config:

            
<!--Upgraded by Core Upgrade version 5.5.1 - Date: 12/15/2010 10:13:51 AM-->
		<!--<customErrors mode="RemoteOnly" redirectMode="ResponseRewrite" defaultRedirect="~/errorpage.aspx" />-->
		<customErrors mode="RemoteOnly" redirectMode="ResponseRewrite" defaultRedirect="~/errorpage.aspx"/>

Open in new window

0
 

Author Comment

by:mgabr123
ID: 34956284
Hi rawinnlnx9,

I currently only have the following my webconfig:

<customErrors mode="On"></customErrors>

Should there be more to that section in order to ensure that the Applicaiton_Error handler in Global.aspx is called?

The handler seems to work perfectly when I test it under the Visual Studio test server but it doesn't work on the production IIS 7 server.

TIA
0
 
LVL 9

Expert Comment

by:rawinnlnx9
ID: 34956806
Yes, this is why I encouraged you to investigate those fields and their arguments. Here let me help you get going so you can get past this:

http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx
The above is an exact discussion from Microsoft on the subject.

See here below on how you address specific error numbers: (the example shows you how to handle 403, and 404 errors)

<customErrors mode="RemoteOnly" defaultRedirect="/error.html"> 
       <error statusCode="403" redirect="/accessdenied.html" /> 
       <error statusCode="404" redirect="/pagenotfound.html" /> 
   </customErrors>

Open in new window


Here is a VB oriented but excellent and extremely thorough tutorial: http://www.15seconds.com/issue/030102.htm
0
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 

Author Comment

by:mgabr123
ID: 34960877
Hi Rawinlnx9,

I looked through that code but I don't see how anything in the webconfig.ini would keep the Applicaiton_Error handler from firing in the Global.aspx file.   According to the articals you linked to the error handling order is as follows:

1 .On the Page itself, in the Page_Error
2. The global.asax Application_Error
3. The web.config file

I have the following code in my Global.aspx file which actually does all my error handling and emails it to my support staff.  My problem is that Application_Error does not fire on my IIS server for some reason that I have not been able to determine.   If my understanding is correct the call to Server.ClearError() at this level shouldn't even let the error reach the webconfig.ini.

Thanks


void Application_Error(object sender, EventArgs e) 
    {
        Exception objErr = Server.GetLastError().GetBaseException();
        
        string err = "Error Caught in Application_Error event\n" +
                     "Error in: " + Request.Url.ToString() +
                     "\nError Message:" + objErr.Message.ToString() +
                     "\nStack Trace:" + objErr.StackTrace.ToString();

        SendMail SendMail = new SendMail();

        SendMail.BySystem("email@email.com", "Error in Application", err);

        Exception ex = Server.GetLastError();

        if (ex is HttpException || ((HttpException)(ex)).GetHttpCode() == 404)
        {
            Server.Transfer("~/404Error.aspx");
        }
        else
        {
            Server.Transfer("~/ServerError.aspx");
        }

        Server.ClearError();
    }

Open in new window

0
 

Accepted Solution

by:
mgabr123 earned 0 total points
ID: 34960982
I was able to locate the explaination as to why my the error handling wasn't firing at the end of the attached MSDN artical:

http://msdn.microsoft.com/en-us/library/24395wz3.aspx

"An error handler that is defined in the Global.asax file will only catch errors that occur during processing of requests by the ASP.NET runtime. For example, it will catch the error if a user requests an .aspx file that does not occur in your application. However, it does not catch the error if a user requests a nonexistent .htm file. For non-ASP.NET errors, you can create a custom handler in Internet Information Services (IIS). The custom handler will also not be called for server-level errors."

0
 
LVL 19

Expert Comment

by:Amandeep Singh Bhullar
ID: 35913547
This question has been classified as abandoned and is closed as part of the Cleanup Program. See the recommendation for more details.
0

Featured Post

The Eight Noble Truths of Backup and Recovery

How can IT departments tackle the challenges of a Big Data world? This white paper provides a roadmap to success and helps companies ensure that all their data is safe and secure, no matter if it resides on-premise with physical or virtual machines or in the cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
As tax season makes its return, so does the increase in cyber crime and tax refund phishing that comes with it
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.

803 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question