为了账号安全,请及时绑定邮箱和手机立即绑定

ASP.NET MVC HandleError

ASP.NET MVC HandleError

小怪兽爱吃肉 2019-08-26 10:43:23
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关于它的博客文章


查看完整回答
反对 回复 2019-08-26
?
红颜莎娜

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();
    }

}


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 427 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信