IIS6 に展開された Windows 認証を使用する ASP.NET MVC3 アプリケーションがあります。認証されたユーザーが表示を許可されていないリンクをクリックすると、ユーザー名とパスワードを (ページではなくブラウザーのダイアログで) 入力するように求められます。
ただし、[キャンセル] をクリックするか、無効な資格情報を 3 回入力すると、401 Unauthorized ページが表示される代わりに、空白の白いページが表示されます。
Fiddler を見ると、[キャンセル] をクリックした後に 3 つの要求/応答があります。応答の概要とヘッダーは次のとおりです。
ASP.NET アクセスが拒否されましたというメッセージ (401.2)
HTTP/1.1 401 Unauthorized Date: Fri, 20 Jul 2012 14:34:21 GMT Server: Microsoft-IIS/6.0 WWW-Authenticate: Negotiate WWW-Authenticate: NTLM X-Powered-By: ASP.NET X-AspNet-Version: 4.0.30319 Cache-Control: プライベート Content-Type: text/html; charset=utf-8 Content-Length: 1701 Proxy-Support: セッションベースの認証
IIS このページを表示する権限がありません (401.1)
HTTP/1.1 401 Unauthorized Content-Length: 1539 Content-Type: text/html Server: Microsoft-IIS/6.0 WWW-Authenticate: NTLM TlRMTVNTUAACAAAADAAMADgAAAAF... (簡潔にするため省略) X-Powered-By: ASP.NET Date: Fri 、2012 年 7 月 20 日 14:34:21 GMT プロキシ サポート: セッションベースの認証
空の応答
HTTP/1.1 401 Unauthorized Date: Fri, 20 Jul 2012 14:34:21 GMT Server: Microsoft-IIS/6.0 WWW-Authenticate: Negotiate WWW-Authenticate: NTLM X-Powered-By: ASP.NET X-AspNet-Version: 4.0.30319 X-AspNetMvc-Version: 3.0 Cache-Control: private Content-Length: 0 Proxy-Support: Session-Based-Authentication
401 エラー ページを表示するにはどうすればよいですか?
更新 1:
これが私のweb.configエラーセクションです。
<customErrors mode="RemoteOnly" defaultRedirect="~/Error" />
も使用してHandleErrorAttribute
います。
IIS が ASP.NET ではなく空白のページを返しているのではないかと思いますが、それを証明する方法がわかりません。
更新 2:
これは面白い。空白のページを更新すると、ASP.NET Access is Denied メッセージが表示されます。