ASP.NET MVC HandleError

 2023-02-17    339  

问题描述

如何在ASP.NET MVC预览5中获取[HandleError]过滤器?
我在我的web.config文件中设置了customerrors

<customErrors mode="On" defaultRedirect="Error.aspx">
  <error statusCode="403" redirect="NoAccess.htm"/>
  <error statusCode="404" redirect="FileNotFound.htm"/>
</customErrors>

并将[handerError]放在我的控制器类上方如下:

ASP.NET MVC HandleError

[HandleError]public class DSWebsiteController: Controller
{
    [snip]
    public ActionResult CrashTest()
    {
        throw new Exception("Oh Noes!");
    }
}

然后我让我的控制器继承自此类并调用Crashtest().
Visual Studio在错误中停止,然后按F5继续,我会重新输出到Error.aspx?aspxerrorpath =/sxi.mvc/crashtest(其中sxi是已用控制器的名称.
禁止路径无法找到,我会在’/’应用程序中获得”服务器错误”. 404.

本网站从预览3到5移植.
除了错误处理之外,一切都运行(对端口没有很多工作).
当我创建一个完整的新项目时,错误处理似乎工作.

想法?

– 注意 –
由于此问题现在已经超过3k查看,我认为将其目前(ASP.NET MVC 1.0)置于使用的内容是有益的.
在 mvc contract项目有一个名为”Rescueattribute”的辉煌属性
你应该也应该看看;)

推荐答案

[HandleError]

当您只提供给您的类(或对该事项的操作方法)时,当未处理的异常发生时,MVC将在Controller View文件夹中查找名为”错误”的相应视图.如果在那里找不到它,那么它将继续查看共享视图文件夹(默认情况下应该有一个错误.Aspx文件)

[HandleError(ExceptionType = typeof(SqlException), View = "DatabaseError")]
[HandleError(ExceptionType = typeof(NullReferenceException), View = "LameErrorHandling")]

您还可以使用有关您要查找的异常类型的特定信息堆叠其他属性.此时,您可以将错误指向除默认的”错误”视图之外的特定视图.

欲了解更多信息,请查看 scott guthrie的博客文章它.

其他推荐答案

还应注意,不将HTTP错误代码设置为500

的错误

(例如未经授权的交认)

将不会由HanderError滤波器处理.

其他推荐答案

HTTP错误代码到500的解决方案
这是一个名为[错误]的属性将其放在一个动作上

public class Error: System.Web.Mvc.HandleErrorAttribute
{
    public override void OnException(System.Web.Mvc.ExceptionContext filterContext)
    {

            if (filterContext.HttpContext.IsCustomErrorEnabled)
            {
                filterContext.ExceptionHandled = true;

            }
            base.OnException(filterContext);
            //OVERRIDE THE 500 ERROR  
           filterContext.HttpContext.Response.StatusCode = 200;
    }

    private static void RaiseErrorSignal(Exception e)
    {
        var context = HttpContext.Current;
      // using.Elmah.ErrorSignal.FromContext(context).Raise(e, context);
    } 

}

//示例:

[Error]
[HandleError][PopulateSiteMap(SiteMapName="Mifel1", ViewDataKey="Mifel1")]
public class ApplicationController : Controller
{
}

以上所述是小编给大家介绍的ASP.NET MVC HandleError,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34230.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。