I want a custom error page shown for 500, 404 and 403. Here’s what I have done:
-
Enabled custom errors in the web.config as follows:
<customErrors mode="On" defaultRedirect="~/Views/Shared/Error.cshtml"> <error statusCode="403" redirect="~/Views/Shared/UnauthorizedAccess.cshtml" /> <error statusCode="404" redirect="~/Views/Shared/FileNotFound.cshtml" /> </customErrors>
-
Registered
HandleErrorAttribute
as a global action filter in theFilterConfig
class as follows:public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new CustomHandleErrorAttribute()); filters.Add(new AuthorizeAttribute()); }
-
Created a custom error page for each of the above messages. The default one for 500 was already available out of the box.
-
Declared in each custom error page view that the model for the page is
System.Web.Mvc.HandleErrorInfo
For 500, it shows the custom error page. For others, it doesn’t.
Is there something I am missing?
It does look like this is not all there is to displaying custom errors as I read through the code in the OnException
method of the HandleErrorAttribute
class and it is handling only 500.
What do I have to do to handle other errors?