Этот вопрос может быть старым, но я нашел его при попытке решить ту же проблему в MVC.Если я могу просто расширить окончательное решение @ JuniorMayhe, я надеюсь, что это поможет кому-то еще.
Для своего проекта я отредактировал файл Global.asax, чтобы перенаправить его на маршрут, который я создал для ошибок 401, отправив пользователя напредставление «Несанкционировано видеть это».
В Global.asax (как он говорит выше, но при этом используются маршруты MVC):
void Application_EndRequest(object sender, System.EventArgs e)
{
// If the user is not authorised to see this page or access this function, send them to the error page.
if (Response.StatusCode == 401)
{
Response.ClearContent();
Response.RedirectToRoute("ErrorHandler", (RouteTable.Routes["ErrorHandler"] as Route).Defaults);
}
}
и в Route.config:
routes.MapRoute(
"ErrorHandler",
"Error/{action}/{errMsg}",
new { controller = "Error", action = "Unauthorised", errMsg = UrlParameter.Optional }
);
и в контроллере:
public ViewResult Unauthorised()
{
//Response.StatusCode = 401; // Do not set this or else you get a redirect loop
return View();
}