Asp.net mvc 3 自定义HandleErrorAttribute的错误不起作用

Asp.net mvc 3 自定义HandleErrorAttribute的错误不起作用,asp.net-mvc-3,razor,error-handling,Asp.net Mvc 3,Razor,Error Handling,我读过很多文章和帖子(包括stackoverflow),但不知道我做错了什么 这是我的代码: Global.asax.cs public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); } public class ErrorController : Controller { public ActionResu

我读过很多文章和帖子(包括stackoverflow),但不知道我做错了什么

这是我的代码:

Global.asax.cs

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
}
public class ErrorController : Controller
{
    public ActionResult Error404()
    {
        return View();
    }

    public ActionResult Error500()
    {
        return View();
    }
}
public ActionResult Index()
{
    using (var db = new DataContext())
    {
        int a = 2, b = 0;
        var r = a / b;
        return View(r);
    }
}
ErrorControler.cs

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
}
public class ErrorController : Controller
{
    public ActionResult Error404()
    {
        return View();
    }

    public ActionResult Error500()
    {
        return View();
    }
}
public ActionResult Index()
{
    using (var db = new DataContext())
    {
        int a = 2, b = 0;
        var r = a / b;
        return View(r);
    }
}
Web.config

<customErrors mode="On" defaultRedirect="~/Error/Error500">
  <error statusCode="404" redirect="~/Error/Error404"/>
</customErrors>
Error500.cshtml

@model System.Web.Mvc.HandleErrorInfo
@{
    ViewBag.Title = "Erro";
}

<h2>@ViewBag.Title</h2>
<div id="error-info">
    <p>Ocorreu um erro inexperado na página <a class="error-url" href="@Response["aspxerrorpath"]" title="Origem do erro">@Response["aspxerrorpath"]</a></p>
    <p>Se o erro persistir, por-favor, entre em contato com os administradores do site.</p>
    <div class="error-details">
        <p>@Model.Exception.Message</p>
    </div>
</div>
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title=“Erro”;
}
@视图包。标题
不可抗力

错误持续存在,请支持,请访问操作系统管理员站点

@Model.Exception.Message

当我尝试访问路径
/MyController
时,出现以下消息:

“/”应用程序中出现服务器错误

找不到资源

描述:HTTP404。您正在寻找的资源(或其 依赖项)可能已被删除、名称已更改或 暂时不可用。请查看下面的URL并进行修改 确保它拼写正确

请求的URL:/Error/Error500

我希望在任何控制器上发生错误时发生这种情况,如果web.config中未通知http状态代码,它将重定向到默认视图
Error500

例如,在中,它处理DbException错误,但希望处理任何类型的错误


404类型的错误(未找到页面)工作正常。用户将被重定向到页面
Error404.cshtml

,如果希望发生这种情况,请从
Global.asax中删除/注释以下行:

filters.Add(new HandleErrorAttribute());
基本上,您必须选择是希望ASP.NET处理错误(web.config中的
部分)还是ASP.NET MVC(全局
HandleErrorAttribute
操作过滤器,顺便说一句,它要求您在web.config中打开自定义错误)


或者签出另一种方法(使用这种方法,您仍然必须从
Global.asax
)中删除我显示的行。

我对行
filters.Add(new HandleErrorAttribute())
进行了注释,但仍然继续相同的行为。此链接是我在研究主题时发现的链接之一,但我不想使用
应用程序\u错误
。我将使用
HandleErrorAttribute
来处理我的应用程序的错误。@Riderman de Sousa Barbosa,我已经完全完成了您在新ASP.NET MVC 3项目中描述的步骤,删除了自定义错误行(如我的答案所示),添加了您在web.config中显示的内容,修改了HomeController的索引操作以匹配您所显示的内容,它对我来说工作得非常好。我发现了错误!出于某种原因,错误发生在链接上,
@Response[“aspxerrorpath”]
我对这一行进行了注释,它工作得非常好。当我看到错误日志和以下消息时发现了这一点:无法将带[]的索引应用于“System.Web.HttpResponseBase”类型的表达式