I’ve got this in my web.config and it’s being hosted by the DiscountASP.net ISP
<customErrors mode="On" defaultRedirect="">
<error statusCode="404" redirect="404.aspx"/>
<error statusCode="500" redirect="404.aspx"/>
</customErrors>
I am hosting the site on DiscountASP.net and they also tell you to config it this way. I’m using Enterprise Library but I don’t think that should make a difference. I don’t believe I need to config anythign for a 404 in EL.
When my page loads with an error, my 404.aspx doesn’t show and I get the default custom errors off message. I do not know why I don’t get my 404.aspx page showing and get this instead:
Runtime Error
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
Details: To enable the details of this specific error message to be viewable on remote machines, please create a tag within a “web.config” configuration file located in the root directory of the current web application. This tag should then have its “mode” attribute set to “Off”.
Notes: The current error page you are seeing can be replaced by a custom error page by modifying the “defaultRedirect” attribute of the application’s configuration tag to point to a custom error page URL.
Have you tried using a relative path to see if that makes a difference?
Alternately, try an absolute path:
EDIT: As others have pointed out, and based on your comment to another answer, the 404 error page should be displayed when someone navigates to a page that doesn’t exist, whereas general errors on a page could be captured by the defaultRedirect. So if you’re testing the 404 then make sure you’re testing with a nonexistent page. To test the defaultRedirect then have one of your pages throw an exception etc.