2010-10-26 67 views
0

我試圖使用ASP.NET ReportViewer(2008 SP1)中的ServerReport.RenderStream方法,但我得到的方法是rsStreamNotFound異常。設置參數後,我已經嘗試了下面兩行不同的代碼。我與SQL Server 2005和SSRS 2005進行了接口連接。我已經看到了有關此問題的修補程序的文章,但我真的寧願不訴諸修補程序,因爲我不確定IT會如何運行英寸沒有太多的文件,我發現的錯誤是ASP.NET ReportViewer服務器報告渲染流結果出現異常

無法找到流。提供給 操作的流 標識符不能位於 報表服務器database.report服務器數據庫中。

準備代碼:

string mimeType; 
string encoding; 
List<ReportParameter> parameters = new List<ReportParameter>(); 
string startDateValue = Request.Form[startDate.UniqueID]; 

string endDateValue = Request.Form[endDate.UniqueID]; 
parameters.Add(new ReportParameter("Owner", "5", false)); 
parameters.Add(new ReportParameter("StartDate", startDateValue, false)); 
parameters.Add(new ReportParameter("EndDate", endDateValue, false)); 
ReportViewer1.ServerReport.SetParameters(parameters); 

電話1:

byte[] result = ReportViewer1.ServerReport.RenderStream("PDF", string.Empty, string.Empty, out mimeType, out encoding); 

召喚2:

byte[] result = ReportViewer1.ServerReport.RenderStream("CSV", string.Empty, string.Empty, out mimeType, out encoding); 

清理:

Response.Clear(); 
Response.ContentType = mimeType; 
Response.ContentEncoding = System.Text.Encoding.GetEncoding(encoding); 
Response.OutputStream.Write(result, 0, result.Length); 

有關解決方案的任何想法?最終目標是將其寫入CSV以供下載。實際上,我很樂意將XML轉換爲CSV.report服務器數據庫。

+0

我能夠通過使用ServerReport.Render而不是來解決這個問題的RenderStream。我不知道這個問題出現的原因或原因,但Render實現了我的目標。 – CodeMonkey1313 2010-10-26 21:58:32

回答

0

是的,渲染方法正是我想要它做的。儘管如此,我很樂意聽到有RenderStream經驗的人。

2

RenderStream用於採取現有的流並以不同的方式處理它或呈現外部資源,因此Render是您一直需要的。的RenderStream C#的簽名是

public byte[] RenderStream (
    string format, 
    string streamId, //cannot be String.Empty! 
    string deviceInfo, 
    out string mimeType, 
    out string encoding 
) 

第二個參數,streamId,是現有流的ID;你通過了String.Empty,因此沒有找到標識符的錯誤信息。使用渲染和RenderStream

public override byte[] Render (
    string format, 
    string deviceInfo, 
    out string mimeType, 
    out string encoding, 
    out string fileNameExtension, 
    out string[] streams, //"The stream identifiers. You can use them to render external resources (images, for example) that are associated with the report." 
    out Warning[] warnings 
) 

This question優惠更多:您可以從Render() methods的一個獲得流ID(S)與out string[] streams

(我知道這個問題是一歲,但我想我會寄我發現別人誰在它絆倒。)

相關問題