Custom 404 .aspx Page Not Working

Posted on 2009-04-13
Last Modified: 2012-05-06
I'm trying to implement a custom 404 error .aspx page (with master page).  I have customErrors turned on (see code).  When I run it locally and go to http://localhost:62534/blah (mode="On"), I get my custom error page.  After I publish to my site, if I go to /blah, I get a "The XML page cannot be displayed" error.  If I go to /blah.aspx, I get my custom error page.  If I got to /blah.htm, I get "The XML page cannot be displayed".  How do I get my custom page to load in these situations?  I'd be happy to redirect "The XML page cannot be displayed" errors to my custom page but need to know how.  Thanks
<customErrors mode="RemoteOnly">  <!-- Tried with "On" as well -->

      <error statusCode="404" redirect="~/CustomErrors/FileNotFound.aspx"/>


Open in new window

Question by:fprickett
  • 4
  • 2

Expert Comment

ID: 24131549

You need to configure IIS Custom Errors for the Site/Virtual Directory.  See the attached screen shot.

Expert Comment

ID: 24131579
What's happening in your situation is you have .NET configured to handled 404 errors.  However, when a user requests a resource from your web server, IIS initially recieves the request.  It makes a decision on who should handle the request.  For static content (ie a directory listing such as /blah or a static page, /blah.html) it handles the request internally; meaning ASP.NET is never called.  In that situation, if IIS needs to return a status code 404, it'll first check the Custom Errors section for the Virtual Directory or Site, and it will return what ever is listed in that section.  However, in this case ASP.NET is never initialized; the request is never forwarded to the ASP.NET worker proces (aspnet_wp.exe) so you're web.config is never loaded, and ASP.NET doesn't return the error page specified in your web.config.  

When IIS receives a request for an ASP.NET resource, ie an aspx page, the request is forwarded to the ASP.NET worker process (aspnet_wp.exe), which spawns an instance of the .NET CLR and begins processing the request.  In the event that the resource doesn't exist, then ASP.NET checks the web.config to see if the customErrors tag is defined, and returns accordingly.

Thus, when you publish your site, it is imperitive that you configure BOTH and IIS CustomErrors.


Author Comment

ID: 24131628
Sorry, I meant to mention that.  I did configure IIS website (IIS -> Default Web Site -> Properties ->Custom Errors -> 404, 404;2, 404;3 -> File = physicalpathtoroot\CustomErrors\FileNotFound.aspx) to handle custom errors.  It even tries to read the FileNotFound.aspx as evidenced in the details of the "The XML page cannot be displayed" error:

"A name was started with an invalid character. Error processing resource ''. Line 1, Position..."

"<%@ Page Language="C#" MasterPageFile="~/master.Master" AutoEventWireup="true" CodeBehind="FileNotFound.aspx.cs" Inher..."

Microsoft Certification Exam 74-409

Veeam® is happy to provide the Microsoft community with a study guide prepared by MVP and MCT, Orin Thomas. This guide will take you through each of the exam objectives, helping you to prepare for and pass the examination.


Accepted Solution

ppittle earned 500 total points
ID: 24131690

In IIS Custom Errors page, when you set the page, there is a drop down to set File or URL.  When you set File, IIS returns the page as markup.  This setting will return your aspx page as if it was an HTML page.  When it gets to your browser, your browser freaks out because it doesn't understand the tags.

Instead set the drop down to URL.  This will tell IIS to send a redirect to the client to the client requests the Error Page.  That way IIS will have ASP.NET rendering the aspx page before sending it to the client.
LVL 15

Expert Comment

ID: 24131868
Dont know if you did this part.In the website properties ASP.Net tab click edit configuration and then under customerror tab set it to ON and set the page name.
Check the document

Author Closing Comment

ID: 31569602
Thanks a lot ppittle.  Using the Absolute URL /CustomErrors/FileNotFound.aspx worked great.  Needed to parse out the RawURL (Request.RawUrl) in the Page_Load to get the requested page (couldn't use Request.QueryString["aspxerrorpath"]) but it's working great.  

Expert Comment

ID: 24132903
I'm glad that worked for you.  Having to parse out the Request.RawUrl or using Request.RefererURL is a pain, but that's the IIS architecture for you.  Hopefully they fixed it in IIS 7.0.

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Developer tools in browsers have been around for a while, yet they are still heavily underused by developers. Developers still fix html or CSS then refresh page to see effect, or they put alert or debugger in JavaScript and then try again and again …
If you are a web developer, you would be aware of the <iframe> tag in HTML. The <iframe> stands for inline frame and is used to embed another document within the current HTML document. The embedded document could be even another website. provides powerful tools for surveying targeted groups, and utilizing data from completed surveys to find trends, discover areas of demand or customer expectation, and make business decisions on products or services.
Use Wufoo, an online form creation tool, to make powerful forms. Learn how to selectively show certain fields based on user input using rules to gather relevant information and data from your forms. The rules feature provides you with an opportunity…

863 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

22 Experts available now in Live!

Get 1:1 Help Now