Я хочу, чтобы все ошибки 401 были перенаправлены на пользовательскую страницу ошибок. Первоначально я настроил следующую запись в моем файле web.config.
<customErrors defaultRedirect="ErrorPage.aspx" mode="On">
<error statusCode="401" redirect="~/Views/Shared/AccessDenied.aspx" />
</customErrors>
При использовании IIS Express появляется стандартная страница ошибки IIS Express 401.
В случае, если я не использую IIS Express, возвращается пустая страница. Используя вкладку «Сеть» Google Chrome для проверки ответа, я вижу, что пока страница пуста, в заголовках возвращается статус 401
До сих пор я пытался использовать предложения этого SO ответа , поскольку я использую IIS Express, но безрезультатно. Я попытался использовать комбинацию <custom errors>
и <httpErrors>
безуспешно - стандартная ошибка или пустая страница по-прежнему отображается.
В настоящий момент раздел httpErrors
выглядит следующим образом, основываясь на ссылке из выше SO вопроса (однако я нашел еще один очень многообещающий ответ не повезло - пустой ответ)
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough" >
<remove statusCode="401" />
<error statusCode="401" path="/Views/Shared/AccessDenied.htm" />
</httpErrors>
<!--
<httpErrors errorMode="Custom"
existingResponse="PassThrough"
defaultResponseMode="ExecuteURL">
<remove statusCode="401" />
<error statusCode="401" path="~/Views/Shared/AccessDenied.htm"
responseMode="File" />
</httpErrors>
-->
</system.webServer>
Я даже изменил файл applicationhost.config
и изменил <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">
на <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated">
, основываясь на информации из iis.net . В ходе моих усилий мне также удалось наткнуться на эту ошибку, как описано в другом вопросе SO .
Как отобразить пользовательские страницы ошибок в Asp.Net Mvc 3?
Дополнительная информация
Следующие действия контроллера были отмечены атрибутом Authorize
для конкретного пользователя.
[HttpGet]
[Authorize(Users = "domain\\userXYZ")]
public ActionResult Edit()
{
return GetSettings();
}
[HttpPost]
[Authorize(Users = "domain\\userXYZ")]
public ActionResult Edit(ConfigurationModel model, IList<Shift> shifts)
{
var temp = model;
model.ConfiguredShifts = shifts;
EsgConsole config = new EsgConsole();
config.UpdateConfiguration(model.ToDictionary());
return RedirectToAction("Index");
}