这是我的服务合同:
<ServiceContract> _
<ServiceKnownType(GetType(String))> _
Public Interface ISecurityMasterChanged
<OperationContract(IsOneWay:=True, Action:="*")> _
Sub ValidateCusipInMessage(ByVal message As MsmqMessage(Of String))
End Interface这是我的班级
Public Class SecurityValidator
Implements ISecurityMasterChanged
<OperationBehavior(TransactionAutoComplete:=False, TransactionScopeRequired:=False)> _
<ServiceKnownType(GetType(String))> _
Public Sub ValidateCusipInMessage(ByVal message As MsmqIntegration.MsmqMessage(Of String)) Implements ISecurityMasterChanged.ValidateCusipInMessage
'...
End Sub当我尝试用下面的代码打开端口时,我得到一个错误
m_ServiceHostQueue = New ServiceHost(Me)
m_ServiceHostQueue.AddServiceEndpoint(GetType(ISecurityMasterChanged), New MsmqIntegrationBinding With {.ExactlyOnce = False}, m_Config("SMChanged Queue").ToString)
m_ServiceHostQueue.Open()System.InvalidOperationException发生Message=“合约'ISecurityMasterChanged‘上的操作'ValidateCusipInMessage’配置为将TransactionAutoComplete设置为true,并将TransactionScopeRequired设置为false。TransactionAutoComplete要求将TransactionScopeRequired设置为true。”Source="System.ServiceModel“
这对我来说没有任何意义,因为正如您所看到的,TransactionAutoComplete没有设置为true。
发布于 2010-07-20 21:15:11
TransactionAutoComplete的默认值为true。这让我想知道是否必须用这个属性而不是你的类来装饰你的契约?
https://stackoverflow.com/questions/1674820
复制相似问题