Solved

IIS 7 404 Error Overrides Global Application_Error Handler

Posted on 2011-02-22
7
2,075 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
Comment Utility
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
Comment Utility
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
Comment Utility
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
Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

 

Author Comment

by:mgabr123
Comment Utility
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
Comment Utility
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
Comment Utility
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

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

In .NET 2.0, Microsoft introduced the Web Site.  This was the default way to create a web Project in Visual Studio 2005.  In Visual Studio 2008, the Web Application has been restored as the default web Project in Visual Studio/.NET 3.x The Web Si…
A quick way to get a menu to work on our website, is using the Menu control and assign it to a web.sitemap using SiteMapDataSource. Example of web.sitemap file: (CODE) Sample code to add to the page menu: (CODE) Running the application, we wi…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

728 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now