状況:
イントラネット 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 アプリケーション プールのユーザー名を使用しているようです。
解決:
アイデア?ありがとう!