我已经在ASP.NET MVC网站中实现了错误处理,类似于这篇帖子的建议。
对于404错误,一切都运行良好。但如何正确地显示友好的屏幕来处理 401 错误?它们通常不会抛出可以在Application_Error()
内处理的异常,而是动作返回HttpUnauthorizedResult。一种可能的方法是将以下代码添加到Application_EndRequest()
方法的末尾。
if (Context.Response.StatusCode == 401)
{
throw new HttpException(401, "You are not authorised");
// or UserFriendlyErrorRedirect(new HttpException(401, "You are not authorised")), witout exception
}
但是在 Application_EndRequest()
中,Context.Session == null,导致 errorController.Execute()
失败,因为它无法使用默认的 TempDataProvider。
// Call target Controller and pass the routeData.
IController errorController = new ErrorController();
errorController.Execute(new RequestContext(
new HttpContextWrapper(Context), routeData)); // Additional information: The SessionStateTempDataProvider requires SessionState to be enabled.
那么,您能否提供一些ASP.NET MVC应用程序中如何“用户友好处理”401的最佳实践建议?
谢谢。