在我的WCF服务中,我有以下OperationContract:
<OperationContract()>
Function getResults(ByVal Settings As Dictionary(Of String, String)) As IO.Stream
...和MessageContract:
<MessageContract()>
Public Class FI
Implements IDisposable
<MessageHeader(MustUnderstand:=True)_
Public id as Integer
<MessageHeader(MustUnderstand:=True)_
Public token as String
<MessageHeader(MustUnderstand:=True)_
Public length as Long
<MessageHeader(MustUnderstand:=True)_
Public del as Char
<MessageHeader(Order:=1)_
Public stream as System.IO.Stream`
Public Sub Dispose() Implements IDisposable.Dispose
FI.Close()
FI=Nothing
End Sub
End Class
在VS中配置服务并更新后,在客户端,我收到多个错误:
1)对于getResults
:而不是词典,预计会ArrayOfKeyValueOfstringstringKeyValueOfstringstring
。我已经将操作合同声明为<OperationContract(), ServiceKnownType(GetType(Dictionary(Of String, String)))>
但没有成功。我的客户端设置是CollectionType = Generic.List和DictionaryCollectionType = Generic.Dictionary。我也尝试过再次删除和添加服务。
2)对于FI
:使用MessageContract FI的方法签名期望参数del
的类型为Integer。在这里,我不知道该怎么做。
我必须补充一点,直到最近,一切都运行良好,我记得的唯一变化就是从2010年到2012年更新Visual Studio。
答案 0 :(得分:0)
我刚刚发现底层问题是对.NET 4.5的更新。这就是我在运行VS2010的机器上所做的,其中使用生成工作。 降级到.NET 4.0 就行了。 VS内部的一代再次发挥作用。
总之:不是VS版本的问题,而是执行VS的机器的.NET版本。我想,.NET 4.5中包含的svcutil(或者是&#34;更新服务参考&#34; VS中使用的函数)负责该错误。