MVC Razor中的404实现

本文关键字:实现 中的 Razor MVC | 更新日期: 2023-09-27 18:11:48

我使用的是ASP。NET MVC 4.5.1 razor c#

我的网页。

<customErrors mode="On" defaultRedirect="Error">
  <error statusCode="404" redirect="/Error.htm"/>
</customErrors>

我有一个类来捕获所有异常,如下所示

public class Error : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        base.OnException(filterContext);
    }
}

My Base Controller如下图所示

[Error]
public class BaseController : AsyncController
{
}

我的控制器动作方法如下

[HttpGet, Route("All-User"), LoginAuthentication, AdminAuthorization]
public async Task<ActionResult> AllUsers()
{
    var list = await _user.List();
    return View(list);
}

我的Url就像下面这样,工作完美

localhost/用户

当我在url下面执行时,我得到404,但错误类的catch块没有被执行。

localhost/All-Userabc

我错过什么了吗?

我也尝试过Install-Package NotFoundMvc,但这不起作用,并得到一个异常"无效操作异常"

MVC Razor中的404实现

你的Error类不会被调用这个url,因为它继承了HandleErrorAttribute,只有当操作方法抛出异常时才会调用。在你的情况下,没有操作方法被执行,因为你的URL不匹配任何路由。

如果你想让你的代码执行404错误尝试使用默认路由的例子从这个问题- ASP。. NET MVC -捕获所有路由和默认路由