【发布时间】:2015-02-03 14:57:38
【问题描述】:
我的 MVC 应用程序的 Global.asax.cs 文件中有以下代码,它捕获 500 和 404 错误并调用我的 ErrorsController,它根据代码返回我的自定义错误页面。这工作正常。但是这段代码也应该捕获 403 错误(未经授权),以便我的控制器也显示正确的视图。但是当我运行它时,我得到一个 IIS 页面,上面写着未经授权的消息。如何获取此代码来调用我的 ErrorsController、接收 403 代码并显示我的自定义视图?
我测试它的方式是在我的一个操作上放置一个 [Authorize] 属性并调用该操作。我应该得到 403 错误,并且应该显示我的自定义错误页面。
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Server.ClearError();
RouteData routeData = new RouteData();
routeData.Values.Add("controller", "Errors");
routeData.Values.Add("action", "Feedback");
routeData.Values.Add("exception", exception);
if (exception.GetType() == typeof(HttpException))
{
routeData.Values.Add("statusCode", ((HttpException)exception).GetHttpCode());
}
else
{
routeData.Values.Add("statusCode", 500);
}
IController controller = new ErrorsController();
controller.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
Response.End();
}
【问题讨论】:
-
也许这个答案会有所帮助stackoverflow.com/questions/15815605/…
标签: asp.net-mvc