为了账号安全,请及时绑定邮箱和手机立即绑定

如何正确处理ASP.NETMVC中的404?

如何正确处理ASP.NETMVC中的404?

侃侃尔雅 2019-06-03 16:48:33
如何正确处理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个赞

ASP.NETMVC并不很好地支持自定义404页面。自定义控制器工厂,捕获所有路由,基本控制器类HandleUnknownAction-啊!

到目前为止,IIS自定义错误页是更好的选择:

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();
    }}

样本工程


查看完整回答
反对 回复 2019-06-03
  • 3 回答
  • 0 关注
  • 1628 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信