流而不是wCF中的byte[]



我正在开发一个用于上传文档的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

最新更新