2

我正在开发用于上传文档的 WCF 服务,以前我正在使用byte[],现在要求已更改为使用Stream

我正在为 WCF 使用外部 WSDL 文件。

我已将使用 byte[] 的函数的签名更改为 Stream,但现在当我创建客户端时,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。

4

1 回答 1

1

不能更改 WSDL 是什么意思?您需要新的 WSDL 文件(带有新签名)才能正确生成客户端。

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

干杯——乔克

于 2012-08-07T10:29:19.847 回答