8

私はすでにいくつかのレポートを実行しているReporting Servicesサーバーを持っていますが、カスタムWebサイト(asp.net MVC3を実行)を介してそれらを生成する必要があります。

このレポートをストリーム/バイトとして取得して、ユーザーに送信する必要があります。「レポートビューア」などはありません。

最後にレポート サービスを使用したのは sql 2005 でした。参照として不明瞭な asmx ファイルを使用する必要があります。

SQL Server が 2008 R2、.Net4、および Visual Studio 2010 を報告している今、どうなっているのでしょうか? 全体を説明するチュートリアルが見つかりません。

(実際、SQL 2008 r2 のレポート ビューアーがないチュートリアルが見つかりません)

4

2 に答える 2

17

MSDNでは、いくつかの方法が提供されています。私は、ASP .NET アプリのすばやく簡単な PDF ボタンにURL アクセスをよく使用しました。

これを行う簡単なハック コードを次に示します。統合認証を使用するようにクリーンアップすることができ、レポート名を保存する方法はたくさんあります。(レポートをデータベースに保存し、後でデータベースから返すことができる古いコードからこれを切り取って貼り付けました。

// First read in the report into memory.

string strReportUser = "RSUserName";
string strReportUserPW = "MySecretPassword";
string strReportUserDomain = "DomainName";

string sTargetURL = "http://SqlServer/ReportServer?" +
   "/MyReportFolder/Report1&rs:Command=Render&rs:format=PDF&ReportParam=" +
   ParamValue;

HttpWebRequest req =
      (HttpWebRequest)WebRequest.Create( sTargetURL );
req.PreAuthenticate = true;
req.Credentials = new System.Net.NetworkCredential(
    strReportUser,
    strReportUserPW,
    strReportUserDomain );

HttpWebResponse HttpWResp = (HttpWebResponse)req.GetResponse();

Stream fStream = HttpWResp.GetResponseStream();




//Now turn around and send this as the response..
byte[] fileBytes = ReadFully( fStream );
// Could save to a database or file here as well.

Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader(
    "content-disposition",
    "attachment; filename=\"Report For " +
        ParamValue + ".pdf\"" );
Response.BinaryWrite( fileBytes );
Response.Flush();
HttpWResp.Close();
Response.End();

ReadFully は

public static byte[] ReadFully( Stream input )
{
   using ( MemoryStream ms = new MemoryStream() )
   {
      input.CopyTo( ms );
      return ms.ToArray();
   }
}  
于 2012-06-05T15:57:25.833 に答える