在wCF中流而不是byte []?

时间:2012-08-07 10:21:23

标签: c# .net wcf stream

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

1 个答案:

答案 0 :(得分:1)

你是什么意思,你不能改变WSDL?您需要新的WSDL文件(使用新签名)才能正确生成客户端。

使用Stream和WCF时,绑定有一些限制,这里有一个链接: http://www.codeproject.com/Articles/36973/Stream-Operation-in-WCF

干杯 --Jocke