2

私は得る

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

私の Web サービスは、IIS6 で実行されている .NET 4 です。私のクライアントは、IIS6 で実行されている .NET 2 です。

ローカル ホストでクライアントとサービスの両方を実行すると、動作します。サービスを Web サーバーに移動すると、上記のエラーが発生します。許可を設定しました

匿名アクセスと IIS 内の統合 Windows 認証のあらゆる組み合わせを試しました。ブラウザ経由で Web サービスにアクセスし、Web Service Studio を使用して呼び出すことができます。別の .NET サービスから呼び出すと機能しません。

アップデート

IUSR アカウントに NTFS ファイル アクセス許可があり、ネットワーク経由でサーバーにアクセスできるユーザーとしてローカル セキュリティ ポリシーにも追加されていることを確認しました。

WebService Studio から呼び出すと、最初に呼び出された 2 つの要求が 401 を返し、次に「Authorization」を渡して再度呼び出して動作します。下記参照。そのため、何らかの理由で匿名アクセスが機能していません。匿名アクセスのみにチェックを入れ、統合 Windows 認証のチェックを外した場合、ブラウザからアクセスすることさえできません。

Content-Type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/HelloWorld"
Host: webdev1
Content-Length: 314
Expect: 100-continue
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><HelloWorld xmlns="http://tempuri.org/"><echo>sd</echo></HelloWorld></soap:Body></soap:Envelope>

HTTP/1.1 401 Unauthorized
Content-Length: 1539
Content-Type: text/html
Server: Microsoft-IIS/6.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
Date: Thu, 28 Jun 2012 12:26:33 GMT
Proxy-Support: Session-Based-Authentication

コール 2 (自動的に発生)

POST http://webdev1/CSHRService/CSHR.asmx HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/HelloWorld"
Authorization: Negotiate YIILzQYGKwYBBQUCoIILwTCCC72gJDAiB/EG1WyqaLj3E67GA0......
Host: webdev1
Content-Length: 314
Expect: 100-continue

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><HelloWorld xmlns="http://tempuri.org/"><echo>sd</echo></HelloWorld></soap:Body></soap:Envelope>
HTTP/1.1 200 OK
Date: Thu, 28 Jun 2012 12:26:34 GMT
Server: Microsoft-IIS/6.0
WWW-Authenticate: Negotiate oYGgMIGdoAMKAQChCwYJKoZIgvcSAQICooGIBI..
X-AspNet-Version: 4.0.30319
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Content-Length: 360

サービスを呼び出す私のコードは

  CSHRService cshrService = new CSHRService();
  string s = cshrService.HelloWorld("d");
4

1 に答える 1

0

私の問題は、IUSR アカウントのパスワードが間違っていたことでした。パスワードを変更するか、アプリ プールを実行するための新しいアカウントを作成して修正しました。

于 2012-06-28T14:11:59.137 に答える