HandleErrorAttribute在MVC 5中不起作用

本文关键字:不起作用 MVC HandleErrorAttribute | 更新日期: 2023-09-27 17:56:16

我正在尝试使HandleErrorAttribut在ASP中工作。NET MVC 5,但它不工作

我在App_Start 下创建了FilterConfig.cs文件

namespace WebApplication12.App_Start
{
    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
        }
    }
}

以及在Global.asax 中

namespace WebApplication12
{
    public class MvcApplication : System.Web.HttpApplication
    {

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        }
    }
}

和web.config 中

  <system.web>
     <customErrors mode="On" defaultRedirect="~/Views/Errorrr.cshtml">
       </customErrors>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>

仍然会出现错误,无法处理异常

  [HandleError]
        public ActionResult Index()
        {
            throw new Exception("New Error");
 }

谢谢你,

Lucia

HandleErrorAttribute在MVC 5中不起作用

默认情况下,HandleError属性将显示位于~/Views/Shared文件夹中的Error视图,但如果要显示特定视图,可以设置属性的view属性。

[HandleError(View = "Error")]
public ActionResult Index()
{
    ViewBag.Message = "Welcome to ASP.NET MVC!";
    int u = Convert.ToInt32("");// Error line
    return View();
} 

看看这是否有帮助。

如果是Mvc5,请确保使用"using System.Web.Mvc"而不是"using Web.Http.Filters",因为后者用于WebApi。还可以发布HandleErrorAttribute类的代码。