Asp.net mvc 3 自定义HandleErrorAttribute的错误不起作用
我读过很多文章和帖子(包括stackoverflow),但不知道我做错了什么 这是我的代码: Global.asax.csAsp.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
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”类型的表达式