如何在C#客户端中使用Stream而不是byte 和Java MTOM Web服务
我有一个使用CXF生成的java webservice,并启用了MTOM。
在java方面,我使用DataHandler而不是byte []来发送一个大文件。
如果我生成一个Java客户端,它工作正常,在客户端也声明DataHandler。
问题是当我尝试创建一个C#.net客户端时。
使用Visual Studio 2010生成客户端代码,它将字段声明为byte []而不是Stream。 这是一个问题,因为在客户端,它正在读取和分配所有数据以填充byte []。
看到一些MTOM和C#的例子,他们使用Strem而不是byte []。
如何生成客户端代码以在C#中使用Stream而不是byte []?
这是使用mtom的wsdl部分:
编辑:我遇到的问题是内存分配。 当用大文件读取大量记录或者用大文件读取记录时,客户端会抛出exception(由于内存分配)。
使用byte []调用web服务,客户端将所有数据加载到内存中,甚至在将结果提供给其余代码来处理它之前。 使用Stream时,我可以访问webservice的结果,并且可以将Stream的内容写入文件,而无需加载到内存中,从而避免内存不足问题。