これは私のサービス契約です:
<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 に設定されている必要があります。" ソース="System.ServiceModel"
ご覧のとおり、TransactionAutoComplete が true に設定されていないため、これは私には意味がありません。