2

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://localhosthttp://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

これに関する多くの投稿やページを読みましたが、自分に合った答えが得られません。

4

2 に答える 2

2

OK、最終的にコードを次のように変更する必要がありました。

rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

そしてそれはうまくいきました。おそらく別の解決策がありますが、私はそれを見つけることができませんでした。

于 2013-10-21T14:47:52.490 に答える
0

ssrs で特定のレポートの参照権限を「ReportingServicesUser」に付与しましたか? リクエストがサーバーに到達しなかったようですが、念のために \Reporting Services\LogFiles を確認します。

また、「レポート ユーザー」ユーザーは、送信する資格情報を使用してレポート サーバーで定義する必要があります。

于 2013-10-20T01:40:02.303 に答える