1

HttpWebRequestを使用して、SSRS2008レポートをPDF形式でプログラムでエクスポートしています。ただし、私の問題は、NetworkCredentialsが機能していないように見えることです。SSRSにアクセスしようとすると、Unauthorized(401)エラーが発生します。

私が提供したNetworkCredentialsが正しいことを知っています。SSRS Webサービスに手動でログインする場合、これらは私が使用する正確な資格情報です。また、これはローカルでは正常に機能しますが、サーバー上では機能しません。

レポートは、asp.net4.0Webサイトで実行されます。ユーザーが[レポートの生成]ボタンをクリックすると、次のコードが実行され(WebRequest.Createの2行目でエラーが発生します)、SSRS2008に接続しようとします。

string sTargetURL = "MY_REPORT_SERVER?/REPORT_NAME&rs:format=pdf&rs:command=render&rc:parameters=Collapsed";

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sTargetURL);
req.PreAuthenticate = true;

 req.Credentials = new NetworkCredential("Username", "Password", "Domain");

  HttpWebResponse HttpWResp = (HttpWebResponse)req.GetResponse();
  Stream fStream = HttpWResp.GetResponseStream();

 byte[] fileBytes = ReadFully(fStream);
 HttpWResp.Close();

 System.Web.HttpContext.Current.Response.Clear();
 System.Web.HttpContext.Current.Response.ContentType = "application/pdf";

 System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=\"" + reportName + ".pdf"\"");
 System.Web.HttpContext.Current.Response.BinaryWrite(fileBytes);
 System.Web.HttpContext.Current.Response.Flush();
 System.Web.HttpContext.Current.Response.End();
4

1 に答える 1

0

アプリケーションの外部で、ローカルおよびレポート マネージャー/サーバーでレポートを実行できますか? 使用している場合、レポートはどのタイプのデータ ソースを使用していますか? データ ソースが、レポート サーバーからの資格情報のダブル ホッピングを受け入れていない可能性があります。必要な読み取り権限を持つドメイン アカウントを作成し、これらの資格情報を偽装するようにレポート サーバー上のデータ ソースを構成する必要がある場合があります。

于 2013-03-04T19:46:47.540 に答える