相关疑难解决方法(0)

如何使自定义错误页在ASP.NET MVC 4中工作

我想要显示500,404和403的自定义错误页面.这是我所做的:

  1. 在web.config中启用了自定义错误,如下所示:

    <customErrors mode="On" 
                  defaultRedirect="~/Views/Shared/Error.cshtml">
    
        <error statusCode="403" 
               redirect="~/Views/Shared/UnauthorizedAccess.cshtml" />
    
        <error statusCode="404" 
               redirect="~/Views/Shared/FileNotFound.cshtml" />
    
    </customErrors>
    
    Run Code Online (Sandbox Code Playgroud)
  2. HandleErrorAttributeFilterConfig类中注册为全局动作过滤器,如下所示:

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new CustomHandleErrorAttribute());
        filters.Add(new AuthorizeAttribute());
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 为上述每条消息创建了自定义错误页面.500的默认值已经开箱即用.

  4. 在每个自定义错误页面视图中声明该页面的模型 System.Web.Mvc.HandleErrorInfo

对于500,它显示自定义错误页面.对于其他人,它没有.

有什么我想念的吗?

看起来这并不是显示自定义错误的全部内容,因为我OnExceptionHandleErrorAttribute类的方法中读取代码并且它只处理500.

我该怎么做才能处理其他错误?

asp.net asp.net-mvc asp.net-mvc-4

242
推荐指数
6
解决办法
25万
查看次数

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>
Run Code Online (Sandbox Code Playgroud)

并将[HandleError]放在我的Controller类上面,如下所示:

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

然后我让我的控制器从这个类继承并在它们上调用CrashTest().视觉工作室在错误时停止并按下f5继续后,我被重新路由到Error.aspx?aspxerrorpath =/sxi.mvc/CrashTest(其中sxi是所用控制器的名称.当然道路无法找到,我得到"'''应用程序中的服务器错误."404.

这个站点从预览3移植到5.除了错误处理之外,所有东西都运行(没有太多工作要移植).当我创建一个完整的新项目时,错误处理似乎有效.

想法?

- 注意 -
由于这个问题现在有超过3K的视图,我认为放入我目前使用的(ASP.NET MVC 1.0)是有益的.在mvc contrib项目中有一个名为"RescueAttribute"的出色属性你也应该检查一下;)

asp.net-mvc handleerror custom-error-pages

109
推荐指数
4
解决办法
10万
查看次数

ASP.NET MVC 5自定义错误页面

我在ASP.NET MVC 5应用程序中使用自定义authorize属性,如下所示:

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(AuthorizationContext context)
    {
        if (context.HttpContext.Request.IsAuthenticated)
        {
            context.Result = new System.Web.Mvc.HttpStatusCodeResult((int)System.Net.HttpStatusCode.Forbidden);                
        }
        else
        {
            base.HandleUnauthorizedRequest(context);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

system.web我的web.config部分,我提到了错误路径,如:

<system.web>
    <customErrors mode="On" defaultRedirect="/Error/Error">
      <error statusCode="403" redirect="/Error/NoPermissions"/>
    </customErrors>
</system.web>
Run Code Online (Sandbox Code Playgroud)

但我从未被重定向到我的自定义错误页面/Error/NoPermissions.相反,浏览器显示"HTTP错误403.0 - 禁止"的常规错误页面.

asp.net-mvc custom-error-pages custom-errors

29
推荐指数
4
解决办法
5万
查看次数