【问题标题】:Stream instead of byte[] in wCF?wCF中的流而不是字节[]?
【发布时间】: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

标签: c# .net wcf stream


【解决方案1】:

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

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

干杯 --乔克

【讨论】:

  • 请查看更新后的问题
猜你喜欢
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
  • 2012-02-03
  • 2018-09-13
  • 1970-01-01
  • 2014-09-26
相关资源
最近更新 更多