我正在开发一个用于上传文档的WCF服务,之前我使用的是byte[]
,现在需求已更改为使用Stream
我正在为WCF使用外部WSDL文件。
我已经更改了使用byte []到Stream的函数的签名,但现在当我创建一个Client时,Upload函数询问的输入参数与之前相同。
你可以帮助我。
有什么不对。我无法更改WSDL文件。我的WSDL文件正在使用base64Binary
用于byte [],这对于Stream也是如此。
服务器代码:
public Response Upload(RequestClass req)
{
}
public RequestClass{
HeaderClass Header;
Stream content;
}
客户端生成的代码:
public Response Upload(Header hdr, byte[] content);
的更新 的
<xs:element name="UploadDocumentReqMsg">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="UploadDocumentContent" nillable="true" type="str:Stream"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="UploadDocumentReqHdr" nillable="true" type="tns:RequestHeader"/>
我在WSDL中的请求,所以对于byte []和Stream,我都在使用Stream。
答案 0 :(得分:1)
你是什么意思,你不能改变WSDL?您需要新的WSDL文件(使用新签名)才能正确生成客户端。
使用Stream和WCF时,绑定有一些限制,这里有一个链接: http://www.codeproject.com/Articles/36973/Stream-Operation-in-WCF
干杯 --Jocke