ASP MVC重定向到错误页面

时间:2015-10-28 09:10:50

标签: asp.net-mvc

我试图通过在我的视图中使用HandleError属性来处理视图中的最终错误:

行动被称为“错误”的原因'是因为它从数据库中获取了记录错误的列表。

    [HandleError]
    public ActionResult Error(int? page)
    {
        var errors = errorRepository.GetErrors();

        // stuff for paging
        var pageSize = 10;
        var pageNumber = (page ?? 1); // if there is no page, return page 1

        return View("Error", errors.ToPagedList(pageNumber, pageSize));
    }

这是/ Shared /文件夹中的错误页面:

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Error";
}

<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>

但由于某种原因,即使我在动作方法中强制执行异常,也不会显示错误页面。它只是转到我的RouteConfig文件中的默认URL。

    routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

非常感谢任何关于它为什么没有显示我的错误页面的提示!

1 个答案:

答案 0 :(得分:2)

对不起,我必须将其添加为答案,但我没有足够的评论意见。

为了能够帮助您,我需要查看HandleErrorAttribute中的代码。但是,在这些情况下,您通常要做的是:

1)在web.config中添加配置设置,表示您将自己处理异常。类似的东西:

<system.web>
    <customErrors mode="On" defaultRedirect="~/Error">
      <error statusCode="500" redirect="~/Error/InternalServer" />
      <error statusCode="404" redirect="~/Error/NotFound" />
    </customErrors>
</system.web>

2)添加方法以接受ErrorController中的那些传入调用(在本例中为Index(),InternalServer(),NotFound())

3)从数据库中获取日志并将其显示给

以外的用户