So you created an ASP.NET application, hit a 404 Not Found error, and now you want to show something else other than the ugly default ASP.NET / IIS error pages, right? Well, sit back, because it’s rather annoying to setup properly. I strongly suggest reading the details that encouraged me to write this article. While that article definitely provides a majority of the setup required to make sure all cases and edge cases are handled when errors occur, there are some things that I had to do in order to make it all work properly.
Create a .html file and .aspx file for each error you want to handle. For example, 404.html and 404.aspx.
In the .aspx page, add this line below the “<%@ Page %>” directive where “xxx” is the error code you are handling such as 404 or 500.
<% Response.StatusCode = xxx; %>
In web.config, add this to your system.web section where each <error> section relates to whatever codes you are handling.
<customerrors mode="RemoteOnly" redirectmode="ResponseRewrite" defaultredirect="~/500.aspx"> <error statuscode="404" redirect="~/404.aspx"> </error></customerrors>
In web.config add this to your system.webServer section where each <remove> and <error> section relates to whatever codes you are handling.
<httperrors errormode="DetailedLocalOnly"> <remove statuscode="404"> <error statuscode="404" path="404.html" responsemode="File"> </error></remove></httperrors>
Be sure to read through the originally linked blog to understand why you have to do certain things. I will say, however, that I had to fix a few things:
- There was a missing semi-colon in the .aspx line for “Response.StatusCode”.