私は、Windows認証を利用する(より広いインターネット用ではなく)職場での内部使用のためのWebアプリケーションを作成しました-ASP.NETは、Windowsに現在の資格情報のセットを問い合わせます。保護されたページの Page_PreInit から呼び出された認証メソッドは、設定した AD グループにユーザー名が見つからない場合、401 エラーをスローします。
HttpExceptionをスローすることから Earlz の CustomErrorsFixer を実装すると、常に HTTP 500 エラーが返されますか? 私も500秒しか返ってこなかったからです。カスタム エラー ページが機能するようになりました。
Visual Studio 開発サーバーでローカルに開発しているときに、アクセスできない場合は、401 エラー ページに直接アクセスすることがわかりました。でも!サイトを IIS サーバーに公開すると、ユーザーがアクセス権を持っていない場合、Windows のユーザー名/パスワード プロンプト(XP の見苦しい小さなプロンプト) が表示されます。これは、別のドメインにログオンしているユーザーに正しい資格情報を入力する機会を与えるため、実際には非常に便利です。
この段階で、パスワード プロンプトが表示されたときに、ユーザーが [キャンセル]または[エスケープ]を押すと、カスタム 401 ページに移動し、アクセスを要求する方法が示されます。ただし、ユーザー名とパスワードを入力しようとすると、デフォルトで間違ったドメインになり、資格情報が正しくない場合、デフォルトの IIS 401 ページが表示されますが、これは避けたいと思っています。3 番目のシナリオ - 正しい資格情報を入力すると、3 回尋ねられ、カスタム エラー ページが表示されます。
そのため、ユーザーが「認証」されている場合はカスタム 401 ページが表示され、認証されていない場合は標準の IIS ページが表示されます。
ただし、ほとんどの人は、ユーザー名/パスワード ボックスでプロンプトが表示されたときに、ドメインを指定せずにユーザー名/パスワードを入力するだけであることに気付きました。これは最終的に正しくないため、非カスタム IIS 401 ページに送信されます。これを解決する方法を知っている人はいますか?アクセスを要求する必要があるグループを確認するために、カスタム 401 ページを表示する必要があるため、非常に面倒です。
問題が発生した場合、私たち全員が使用しているブラウザーは、XP では IE8、Windows 7 では IE9 です。コードを投稿する必要がある場合はお知らせください。