Asp.net
報告服務:獲取生成報告的 PDF
我有一個報告服務伺服器,它已經有一些正在執行的報告,我現在需要通過自定義網站(執行 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(); } }