2010-10-26 49 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

(我知道这个问题是一岁,但我想我会寄我发现别人谁在它绊倒。)

相关问题