Asp.net

報告服務:獲取生成報告的 PDF

  • September 25, 2017

我有一個報告服務伺服器,它已經有一些正在執行的報告,我現在需要通過自定義網站(執行 asp.net MVC3)生成它們。

我需要將此報告作為流/字節檢索以將其發送給使用者。沒有“報告查看器”左右。

我上次使用報告服務是使用 sql 2005,我們應該將一個不起眼的 asmx 文件作為參考。

現在情況如何,使用 sql server 報告 2008 R2、.Net4 和 Visual Studio 2010?我找不到解釋整個事情的教程。

(實際上我找不到沒有 sql 2008 r2 報告查看器的教程)

MSDN提供了幾種方法。我經常使用URL 訪問來獲取 ASP .NET 應用程序中的快速簡單 PDF 按鈕。

這是執行此操作的快速破解程式碼。可以清理它以使用集成身份驗證,並且可以通過多種方式儲存報告名稱。(我從一些舊程式碼中剪切並粘貼了它,這些程式碼會將報告儲存到數據庫中,然後可以從數據庫中返回它。

// 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();
  }
}  

引用自:https://stackoverflow.com/questions/10898999