SQL Server 2008 R2 の Reporting Services に接続するアプリケーションがあります。
エラーは次のとおりです。
System.Net.WebException: The request failed with HTTP status 401: Unauthorized.
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse
(SoapClientMessage message, WebResponse response, Stream responseStream,
Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke
(String methodName, Object[] parameters)
at Microsoft.SqlServer.ReportingServices2005.Execution.ReportExecutionService.LoadReport
(String Report, String HistoryID)
アプリケーションは 2 つの異なる顧客で本番環境で正常に実行されているため、コーディングの問題ではありません。
ADを使用している顧客のサーバーにインストールしようとしています。ただし、SQL Server と IIS はすべて同じマシンにあるため、AD はあまり気にしません。
IE を管理者として実行すると動作しますが、他のユーザーでは動作しません。ASP.NET アプリは、ReportingServicesUser グループのメンバーである、ローカル コンピューターで作成されたユーザー ( ReportingServicesUserと呼ばれる) を使用して SSRS に接続しています。
私が試したこと:
- ReportingServicesUserを RS Web サイトのサイト設定に追加します (ネットワーク サービス、IUSR、認証済みユーザー グループ、ローカル サービスなどについても同様です)。
- ReportingServicesUserを RS Web サイトのフォルダー アクセス許可に追加します (ネットワーク サービス、IUSR、Authenticated Users グループ、ローカル サービスなどについても同様です)。
- データベース (アプリ データベースおよび RS 関連のデータベース) に対するそのユーザーの権限を追加しました。
- RS フォルダーに NTFS アクセス許可を追加しました (再確認します)。
http://localhost
、http://computername
およびを使用して RS に接続するhttp://domain.com
参考までに、コードは次のとおりです (簡易版)。
var service = new ReportExecutionService();
service.Credentials = new NetworkCredential("ReportingServicesUser", "password");
service.Url = "http://computername:90/ReportServer/ReportExecution2005.asmx";
service.ExecutionHeaderValue = new ExecutionHeader();
var execInfo = new ExecutionInfo();
execInfo = service.LoadReport("path-to-the-report", null);
===> Here it throws the exception
これに関する多くの投稿やページを読みましたが、自分に合った答えが得られません。