SSRS Report Server使用C#向Web客户端发送报告

时间:2017-04-18 08:34:55

标签: c# reporting-services

https://msdn.microsoft.com/en-us/library/ms252172.aspx

我正在使用该文章中的render方法

public void Render(
    string format,
    string deviceInfo,
    CreateStreamCallback createStream,
    out Warning[] warnings
)

render方法调用CreateStream

private Stream CreateStream(string name, string fileNameExtension, 
      Encoding encoding, string mimeType, bool willSeek)
    {
        Stream stream = new FileStream(name + "." + fileNameExtension, 
          FileMode.Create);
        m_streams.Add(stream);
        return stream;
    }

m_streams = new List<Stream>();
report.Render("Image", deviceInfo, CreateStream, out warnings);

foreach (Stream stream in m_streams)
  stream.Position = 0;

如果我想让CreateStream方法使用chunk编写一个http响应对象,我该如何实现呢?

除了迭代之外,foreach方法在这里做了什么,为什么它将stream.Position设置为0?

由于report.Render方法返回一个void并对CreateStram进行回调,如果图像很大,我如何循环遍历块并将二进制块返回给http响应对象?

1 个答案:

答案 0 :(得分:0)

你可以对RenderStream的结果做任何事情,如byte [],对。我不知道为什么将位置设置为0,但是,您可以将图像写入临时文件夹,例如:

var image = _service.RenderStream("HTML4.0", streamID, null, out imageEncoding, out mimeType);
File.WriteAllBytes(Path.Combine(_physicalTempFolder,streamID),image);