0

状況:

イントラネット Web サーバーで実行する Web サービスを作成しました。このサービスには、Microsoft SparePoint の lists.asmx Web サービスを呼び出す操作があります。サービスにはテスト運用もあります。これらのサービスをローカル (ビジュアル スタジオ) で呼び出すと、すべてがうまく機能します。

問題:

この Web サービスを Web サーバー上の IIS に展開すると、lists.asmx を呼び出す操作が 401 エラーで失敗します。これは、Web サーバーにログインしたときに IE からサービスを実行した場合、またはサービスをリモートで実行した場合の両方で発生します (カスタム エラーがオフに設定されているため、401 エラーが表示されます)。

望ましい結果:

私の Web サービスは、現在のユーザーの資格情報を取得し、lists.asmx Web サービスに渡す必要があります。

現在のコード: Web サービスでの資格情報の設定:

sharepointService.Lists listService = new sharePointService.Lists();
listService.Credentials = System.Net.CredentialCache.DefaultCredentials;

web.config で Web 参照を設定します。

  <applicationSettings>
    <MyServices.Properties.Settings>
      <setting name="sharepointService_Lists" serializeAs="String">
        <value>http://sharepoint.myDomain.com/_vti_bin/lists.asmx</value>
      </setting>
    </MyServices.Properties.Settings>
  </applicationSettings>

その他の情報:

テスト操作は、IIS Web サーバーに展開されたときに機能し、次の 2 つの文字列を返します。

HttpContext.Current.Request.LogonUserIdentity.Name=NT AUTHORITY\IUSR

System.Security.Principal.WindowsIdentity.GetCurrent().Name=IIS APPPOOL\ASP.NET v4.0

したがって、これが役立つ情報を提供する場合、Web サービスは IIS アプリケーション プールのユーザー名を使用しているようです。

解決:

アイデア?ありがとう!

4

1 に答える 1

0

セクションの下の web.config ファイルで authentication mode="Windows" を設定する必要があります。

于 2013-08-01T14:55:35.227 に答える