Ceci est mon contrat de service:Comment utiliser MsmqIntegrationBinding avec une file d'attente non-transactionnelle?
<ServiceContract> _
<ServiceKnownType(GetType(String))> _
Public Interface ISecurityMasterChanged
<OperationContract(IsOneWay:=True, Action:="*")> _
Sub ValidateCusipInMessage(ByVal message As MsmqMessage(Of String))
End Interface
Ceci est ma classe
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
Lorsque je tente d'ouvrir le port avec ce code, je reçois une erreur
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 = "L'opération 'ValidateCusipInMessage' du contrat 'ISecurityMasterChanged' est configurée avec TransactionAutoCo mplete vaut true et avec TransactionScopeRequired défini sur false. TransactionAutoComplete exige que TransactionScopeRequired est définie sur true. » Source = « System.ServiceModel »
Cela ne me fait pas de sens parce que, comme vous pouvez le voir, TransactionAutoComplete n'est pas définie sur true.
Non ce n'est pas un attribut de niveau contrat, il est spécifié correctement dans l'implémentation. –