How can I properly handle 404s in ASP.NET MVC?
Posted
by Brian
on Stack Overflow
See other posts from Stack Overflow
or by Brian
Published on 2009-03-06T18:21:39Z
Indexed on
2010/04/05
5:53 UTC
Read the original article
Hit count: 294
asp.net-mvc
I am just getting started on ASP.NET MVC so bear with me. I've searched around this site and various others and have seen a few implementations of this.
EDIT: I forgot to mention I am using RC2
Using URL Routing:
routes.MapRoute(
"Error",
"{*url}",
new { controller = "Errors", action = "NotFound" } //404s
);
The above seems to take care of requests like this (assuming default route tables setup by initial MVC project): "/blah/blah/blah/blah"
Overriding HandleUnknownAction() in the controller itself:
//404s - handle here (bad action requested
protected override void HandleUnknownAction(string actionName) {
ViewData["actionName"] = actionName;
View("NotFound").ExecuteResult(this.ControllerContext);
}
However the previous strategies do not handle a request to a Bad/Unknown controller. For example, I do not have a "/IDoNotExist", if I request this I get the generic 404 page from the web server and not my 404 if I use routing + override.
So finally, my question is: Is there any way to catch this type of request using a route or something else in the MVC framework itself?
OR should I just default to using Web.Config customErrors as my 404 handler and forget all this? I assume if I go with customErrors I'll have to store the generic 404 page outside of /Views due to the Web.Config restrictions on direct access. Anyway any best practices or guidance is appreciated.
© Stack Overflow or respective owner