Przyjazny dla użytkownika błąd ASP.NET MVC 401

Zaimplementowałem obsługę błędów w witrynie ASP.NET MVCw pewien sposób sugeruje ten post.

Z błędami 404 wszystko działa dobrze. Ale jak poprawnie wyświetlić przyjazny dla użytkownika ekran dlaBłąd 401? Zwykle nie rzucają wyjątku, który można obsługiwać w środkuApplication_Error() ale raczej akcja zwraca HttpUnauthorizedResult. Jednym z możliwych sposobów jest dodanie następującego kodu na koniecApplication_EndRequest() metoda

if (Context.Response.StatusCode == 401)
{
    throw new HttpException(401, "You are not authorised");
    // or UserFriendlyErrorRedirect(new HttpException(401, "You are not authorised")), witout exception
}

Ale w środkuApplication_EndRequest() Context.Session == null,errorController.Execute() kończy się niepowodzeniem, ponieważ nie można użyć domyślnego obiektu 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.

Czy możesz zasugerować kilka dobrych praktyk dotyczących „przyjaznego dla użytkownika uchwytu” 401 w aplikacji ASP.NET MVC?

Dzięki.

questionAnswers(4)

yourAnswerToTheQuestion