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
,但这不起作用,并得到一个异常"无效操作异常"
你的Error
类不会被调用这个url,因为它继承了HandleErrorAttribute,只有当操作方法抛出异常时才会调用。在你的情况下,没有操作方法被执行,因为你的URL不匹配任何路由。
如果你想让你的代码执行404错误尝试使用默认路由的例子从这个问题- ASP。. NET MVC -捕获所有路由和默认路由