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?