【发布时间】:2012-08-04 08:14:28
【问题描述】:
我正在开发用于上传文档的 WCF 服务,之前我使用的是 byte[],现在要求已更改为使用 Stream
我正在为 WCF 使用外部 WSDL 文件。
我已将使用 byte[] 的函数的签名更改为 Stream,但现在当我创建客户端时,上传函数要求与以前相同的输入参数。
你能帮我解决这个问题吗?
怎么了。我无法更改 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。
【问题讨论】:
-
好的,如何生成代理客户端?
-
RequestClass 的 DataContract 长什么样,为什么不在客户端代码中传递一个新的 RequestClass?
-
当我为服务器创建一个对象时,上传方法有两个参数,即使我在服务器中只给了一个参数
-
这是因为我有一个 RequestClass 的构造函数,它接受 Header 和 Content