新米エンジニアの失敗再発防止メモ

自分そしてこの世界の皆が、同じ失敗をしないためのメモ

Twitterやってます!@rakuton_t
欲しいものリストのブタメンを送ってくれた方、ありがとうございます!

WebResponse取得時に 401 エラー「リモート サーバーがエラーを返しました: (401) 許可されていません」

IIS から WebResponse 取得時に以下のようなエラーに悩まされたので、メモしておく。

リモート サーバーがエラーを返しました: (401) 許可されていません

[環境]
言語:C#
フレームワークASP.NET.
サーバー:Microsoft Internet Information Services (IIS)

WebResponseでHTTP通信をしようとした際に発生したエラーだ。

考えられる原因

1. 権限がない
2. 通信先が、認証が必要な設定になっている
3. 通信先が、Webアプリケーション化されていない。

私のときは、2と3が原因だった。
以下、全て通信先の設定を変更できる前提の対処方だ。

通信先が、認証が必要な設定になっている

IISを起動し、通信先の認証設定を変更しよう。

「認証」をクリック


上記画像のように、「匿名認証」のみを有効にし、それ以外を無効にすれば、401は解消されます。

「匿名認証」っていうのはつまり認証不要ってことです。
全ての認証を無効にするだけだと、誰もアクセスできなくなる。

通信先が、Webアプリケーション化されていない。

IISを起動し、通信先のアプリケーションがあるフォルダを右クリックし、「アプリケーションへの変換」をしましょう。
アプリケーション化するのは、Web.Configがあるフォルダです。

私の記事が役に立ったら、どうぞ何か買ってください!→ Amazon欲しいものリスト