增加内存流容量

时间:2017-02-23 08:50:12

标签: c# reporting-services memorystream

我正在尝试从SSRS服务器读取报告, 问题是我的内存流不能超过65536字节。

到目前为止,我已尝试使用内存流,但在阅读报告本身之前尚未成功设置其容量

            GetItemDefinitionResponse reportDefinition = channel.GetItemDefinition(DefinitionRequest);
            MemoryStream memstream = new MemoryStream(reportDefinition.Definition);
            rdlFile.Load(memstream);

上面的MemoryStream必须在读取文件之前增加容量。

我试过在我的App.config中玩,但我不知道从哪里开始能够设置内存流的字节容量

1 个答案:

答案 0 :(得分:1)

你可以

byte[] bytes = reportDefinition.Definition; 
var ms = new MemoryStream(); 
ms.Write(bytes, 0, bytes.Length);

通过这种方式,MemoryStream可以调整大小。

写完后你可能应该把位置改为0:

ms.Position = 0;

但这取决于您是想在MemoryStream上添加新数据(不要设置Position),还是只想重新读取数据(设置Position })。 new MemoryStream(reportDefinition.Definition)有一个隐含的Position = 0

作为旁注,接受MemoryStream的{​​{1}}构造函数的重载是不可调整大小的,而没有byte[]参数的两个重载({{ 1}}和byte[])可以调整大小。