rid*_*nsb 2 error-handling razor asp.net-mvc-3
我已经阅读了很多文章和几篇文章(包括这里的stackoverflow),但不知道我做错了什么.
这是我的代码:
的Global.asax.cs
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
Run Code Online (Sandbox Code Playgroud)
ErrorControler.cs
public class ErrorController : Controller
{
public ActionResult Error404()
{
return View();
}
public ActionResult Error500()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
Web.config文件
<customErrors mode="On" defaultRedirect="~/Error/Error500">
<error statusCode="404" redirect="~/Error/Error404"/>
</customErrors>
Run Code Online (Sandbox Code Playgroud)
MyController.cs
public ActionResult Index()
{
using (var db = new DataContext())
{
int a = 2, b = 0;
var r = a / b;
return View(r);
}
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
当我尝试访问该路径时,/MyController将显示以下消息:
'/'应用程序中的服务器错误.
无法找到该资源.
说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用.请查看以下网址,确保拼写正确.
请求的URL:/错误/错误500
我想在任何控制器上发生错误时发生这种情况,如果在web.config中没有通知http状态代码,它会重定向到默认视图 Error500
例如,在本文中,它处理DbException错误,但希望处理任何类型的错误.
404类型的错误(找不到页面)完美无缺.用户被重定向到页面Error404.cshtml
如果您希望这样做,请从以下位置删除/评论以下行Global.asax:
filters.Add(new HandleErrorAttribute());
Run Code Online (Sandbox Code Playgroud)
您基本上必须选择是否希望ASP.NET处理您的错误(<customErrors>web.config中的部分)或ASp.NET MVC(全局HandleErrorAttribute操作筛选器,顺便说一下,它要求您在web.config中打开自定义错误) )
或者检查一种处理ASP.NET MVC中错误的替代方法(使用这种方法,您仍然必须删除我显示的行Global.asax).
| 归档时间: |
|
| 查看次数: |
7668 次 |
| 最近记录: |