Tag: mtom

如何在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的内容写入文件,而无需加载到内存中,从而避免内存不足问题。

WCF:“为MTOM消息创建阅读器时出错”

试图让MTOM在WCF客户端中工作。 我正在尝试使用的特定函数发送一个PDF文档的MTOM编码字节数组。 使用SoapUI使用WSDL测试API工作正常; 但是,当我尝试在客户端中执行相同的操作时,我收到以下错误: Error creating a reader for the MTOM message System.Xml.XmlException: MTOM messages must have type ‘application/xop+xml’. at System.Xml.XmlMtomReader.ReadMessageContentTypeHeader(ContentTypeHeader he ader, String& boundary, String& start, String& startInfo) at System.Xml.XmlMtomReader.Initialize(Stream stream, String contentType, Xml DictionaryReaderQuotas quotas, Int32 maxBufferSize) at System.Xml.XmlMtomReader.SetInput(Stream stream, Encoding[] encodings, Str ing contentType, XmlDictionaryReaderQuotas quotas, Int32 maxBufferSize, OnXmlDic tionaryReaderClose onClose) at […]