web-dev-qa-db-ja.com

リクエストはHTTPステータス401で失敗しました:未承認

IIS6(XP Pro SP2)で実行されている.NET 2.0 Webサイト(VB)と、ASMX Webサービスをホストしている.NET 3.5(IISのASP.NETタブで.NET2として構成されている)があります。

Chromeでは、ASMXを呼び出してWebメソッドを正常に呼び出すことができます。ただし、コードでWebメソッドを呼び出すと、.NET 2.0 Webサイトから次のようになります。

リクエストはHTTPステータス401で失敗しました:Unauthorized。

どうすればこれを回避できますか?

14
Matt W

webServiceオブジェクトを初期化するときに、アプリケーションに認証情報を設定する必要があります。

何かのようなもの webService.UseDefaultCredentials = true

これにより、アプリケーションを実行している現在のユーザーにリクエストの認証情報が設定されます。

21
btlog
webService.UseDefaultCredentials = true

これでうまくいきました。

3
user1772100

IIS 7で、匿名認証を有効にすると、デバッグできるはずです。

3
Glade Mellor

これを使用できます:

webservice.UseDefaultCredentials = true;

機能しない場合は、上記のコードの代わりに以下のコードを使用してください

webservice.Credentials = new NetworkCredential("userName", "password", "domain");
webservice.PreAuthenticate = true;

注:ユーザー名のパスワードとドメインは、webserviceにアクセスするユーザーのユーザー資格情報です

したがって、ユーザーがWebサービスにアクセスする権限を持っていることを確認してください

多分ユーザーはwindowsユーザーです

ドメインは次の場所から取得できます。「MyComputer」を右クリックして、ドメインがコンピュータ名またはワークグループであるプロパティ

2
Mohamad Chami

私はこの方法でテストしています:

CheckListService.CheckList chkSrvice = new CheckListService.CheckList() {
    UseDefaultCredentials = true };
0
ali