如何正确处理ASP.NETMVC中的404?我用的是RC2使用URL路由:routes.MapRoute(
"Error",
"{*url}",
new { controller = "Errors", action = "NotFound" } // 404s);上面似乎处理了类似这样的请求(假设初始MVC项目设置默认路由表):“/blah/blah”在控制器本身中重写HandleUnKnownAction():// 404s - handle here (bad action requestedprotected override void HandleUnknownAction(string actionName) {
ViewData["actionName"] = actionName;
View("NotFound").ExecuteResult(this.ControllerContext);}但是,前面的策略不处理对不良/未知控制器的请求。例如,我没有“/IDoNotExist”,如果我请求它,我将从Web服务器获得通用404页,如果我使用路由+覆盖,则不会得到我的404页。最后,我的问题是:是否有任何方法可以使用MVC框架本身中的路由或其他方法来捕获这种类型的请求?或者我应该默认使用Web.Config自定义Error作为404处理程序,而忘记这一切吗?我认为,如果使用CustomError,由于Web.Config对直接访问的限制,我必须将通用404页存储在/view之外。
3 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
HandleUnknownAction
web.config
<system.webServer> <httpErrors errorMode="Custom" existingResponse="Replace"> <remove statusCode="404" /> <error statusCode="404" responseMode="ExecuteURL" path="/Error/PageNotFound" /> </httpErrors></system.webServer>
错误控制器
public class ErrorController : Controller{ public ActionResult PageNotFound() { Response.StatusCode = 404; return View(); }}
样本工程
- 3 回答
- 0 关注
- 1628 浏览
添加回答
举报
0/150
提交
取消