我试图通过在我的视图中使用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 }
);
非常感谢任何关于它为什么没有显示我的错误页面的提示!
答案 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)从数据库中获取日志并将其显示给
以外的用户