我正在开发一个用于上传文档的WCF服务,以前我使用byte[]
,现在要求已更改为使用Stream
我正在为WCF使用一个外部WSDL文件。
我已经将使用byte[]的函数的签名更改为Stream,但现在当我创建客户端时,Upload函数会要求与以前相同的输入参数。
你能帮我一下吗。
怎么了。我无法更改WSDL文件。我的WSDL文件对byte[]使用base64Binary
,这对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。
您不能更改WSDL是什么意思?您需要新的WSDL文件(带有新的签名)来正确地生成客户端。
当使用Stream和WCF时,绑定有一些限制,这里有一个链接:http://www.codeproject.com/Articles/36973/Stream-Operation-in-WCF
干杯--Jocke