すべての 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 ステータスが返されることがわかります
IIS Expressを使用しているため、これまでに試したのはこのSOの回答からの提案を使用していますが、役に立ちませんでした。組み合わせ<custom errors>
を使用してみました<httpErrors>
が、うまくいきません - 標準エラーまたは空白のページがまだ表示されます。
セクションは、上記のSOの質問からのリンクhttpErrors
に基づいて、現時点では次のようになっています(別の非常に有望な回答も見つかりましたが、運がありません-空白の回答)
<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">
、iis.net<httpErrors lockAttributes="allowAbsolutePathsWhenDelegated">
からの情報に基づいて変更しました。私の努力の過程で、別の SO questionで説明されているように、このエラーに遭遇することもできました。
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");
}