ASP.NET MVC HandleError我如何[HandleError]在asp.net MVC Preview 5中进行过滤?我在我的Web.config文件中设置了customErrors<customErrors mode="On" defaultRedirect="Error.aspx">
<error statusCode="403" redirect="NoAccess.htm"/>
<error statusCode="404" redirect="FileNotFound.htm"/></customErrors>并将[HandleError]放在我的Controller类上面,如下所示:[HandleError]public class DSWebsiteController: Controller{
[snip]
public ActionResult CrashTest()
{
throw new Exception("Oh Noes!");
}}然后我让我的控制器从这个类继承并在它们上调用CrashTest()。视觉工作室在错误时停止,按f5继续后,我被重新路由到Error.aspx?aspxerrorpath = / sxi.mvc / CrashTest(其中sxi是使用过的控制器的名称。当然道路无法找到,我得到“'''应用程序中的服务器错误。”404。这个站点从预览3移植到5.除了错误处理之外,所有东西都运行(没有太多工作要移植)。当我创建一个完整的新项目时,错误处理似乎有效。想法?- 注意 -由于这个问题现在有超过3K的视图,我认为放入我目前使用的(ASP.NET MVC 1.0)是有益的。在mvc contrib项目中有一个名为“RescueAttribute”的出色属性你也应该检查一下;)
3 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
[HandleError]
当你只为你的类提供HandleError属性时(或者你的动作方法),当发生未处理的异常时,MVC将首先在Controller的View文件夹中查找名为“Error”的相应视图。如果它找不到它,那么它将继续查看共享视图文件夹(默认情况下应该包含一个Error.aspx文件)
[HandleError(ExceptionType = typeof(SqlException), View = "DatabaseError")][HandleError(ExceptionType = typeof(NullReferenceException), View = "LameErrorHandling")]
您还可以使用有关所查找的异常类型的特定信息来堆叠其他属性。此时,您可以将错误定向到默认“错误”视图以外的特定视图。
有关更多信息,请查看Scott Guthrie关于它的博客文章。
红颜莎娜
TA贡献1842条经验 获得超12个赞
[HandleError] public class ErrorController : Controller { [AcceptVerbs(HttpVerbs.Get)] public ViewResult NotAuthorized() { //401 Response.StatusCode = (int)HttpStatusCode.Unauthorized; return View(); } [AcceptVerbs(HttpVerbs.Get)] public ViewResult Forbidden() { //403 Response.StatusCode = (int)HttpStatusCode.Forbidden; return View(); } [AcceptVerbs(HttpVerbs.Get)] public ViewResult NotFound() { //404 Response.StatusCode = (int)HttpStatusCode.NotFound; return View(); } public ViewResult ServerError() { //500 Response.StatusCode = (int)HttpStatusCode.NotFound; return View(); }
}
- 3 回答
- 0 关注
- 427 浏览
添加回答
举报
0/150
提交
取消