0

我正在尝试使用ServerReport.RenderStreamASP.NET ReportViewer (2008 SP1) 中的方法,但我rsStreamNotFound从该方法中得到了一个异常。设置参数后,我尝试了下面两行不同的代码。我正在与 SQL Server 2005 和 SSRS 2005 进行交互。我已经看过有关此问题的修补程序的文章,但我真的不想求助于修补程序,因为我不确定 IT 是否可以接受它在。我没有找到太多关于错误的文档

找不到流。提供给操作的流标识符不能位于报表服务器数据库中。请参阅报表服务器数据库。

准备代码:

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 以供下载。实际上,我对将转换为 CSV.report 服务器数据库的 XML 感到满意。

4

2 回答 2

2

RenderStream用于获取现有的 Stream 并以不同的方式对其进行处理或渲染外部资源,这Render就是您一直需要的。的 C# 签名RenderStream

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

第二个参数streamId是现有 Stream 的 ID;您正在通过String.Empty,因此找不到标识符的错误消息。您可以从Render() 方法out string[] streams之一获取 StreamID(s) :

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
)

这个问题更多地涉及使用 Render 和 RenderStream。

(我意识到这个问题已经有一年了,但我想我会把我发现的东西发布给其他偶然发现它的人。)

于 2014-12-30T18:48:36.213 回答
0

是的,Render 方法完全符合我的要求。不过,我很想听听有 RenderStream 经验的人的来信。

于 2010-10-28T12:15:54.257 回答