我正在开发一个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
答案 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