WCF问题与String参数和Stream返回

时间:2012-12-05 17:14:37

标签: .net vb.net wcf .net-4.0

我正在开发一个WCF项目,该项目生成并返回一个pdf文件作为System.IO.Stream。我遇到了一个我无法解释的行为。

WCF公开的方法之一如下:

Public Function Print(ByVal input As Integer) As Stream
    'Do stuff here.
    Return pdfStream
End Function

客户端使用以下方法调用方法:

Dim streamReturn as Stream
streamReturn = Service.Print(input)

这很有效。当我尝试将输入的数据类型更改为String时出现问题。

Public Function Print(ByVal input As String) As Stream
    'Do stuff here.
    Return pdfStream
End Function

当我更新客户端中的服务引用时,现在列出了错误:

streamReturn = Service.Print(input)

“类型'字节1维数组'的值无法转换为'System.IO.Stream'。”

似乎当我的输入的数据类型更改为String时,传输模式将从流回复到缓冲。有什么想法吗?

编辑:WCF在.Net 4.0中,客户端是.Net 3.5

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。这是由于我使用的序列化方法。我已经将XMLSerializerFormat()添加到我的ServiceContract中,因此我可以在我的一个自定义对象中使用索引List。对象是:

<DataContract()>
Class MyClass
    <DataMember()>
    Property MyList() As List(Of Object)
    <DataMember()>
    Property MyList(i As Integer) As Object
End Class

删除XMLSerializerFormat()标记(Reverting to DataContractFormat)后,我不得不从索引属性中删除DataMember()标记,然后能够使用String参数和Stream返回。

<DataContract()>
Class MyClass
    <DataMember()>
    Property MyList() As List(Of Object)
    '<DataMember()>
    Property MyList(i As Integer) As Object
End Class