Domanda

Sto cercando di creare un servizio di lettura della lettera morta dal sistema transazionale di coda lettera morta.

I servizi di configurazione aspetto come questo:

<service name="NotificationDeadLetterQueueService">
 <endpoint
  address="net.msmq://localhost/system$;DeadXact"
  binding="netMsmqBinding"
  contract="INotificationService"
/>
</service>

La mia interfaccia di servizio:

[ServiceContract]
public interface INotificationService
{
[OperationContract(IsOneWay=true)]
[NetDataContractSerializerFormatAttribute]
void HandleNotification(Notification notification);
}

Con la mia implementazione del servizio:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class NotificationDeadLetterQueueService : INotificationService
{
   #region INotificationService Members

   [OperationBehavior(TransactionScopeRequired = true)]
   public void HandleNotification(Notification notification)
   {
      throw new NotImplementedException();
   }

   #endregion
}

E iniziare l'host in questo modo:

ServiceHost serviceHost = new ServiceHost(typeof(NotificationDeadLetterQueueService));
serviceHost.Open();

Finora tutto sembra descritte in molti libri e tutorial, ma quando ho generare vicoli lettere all'interno della transazionale dead-letter queue il servizio non venga invocato. Cosa c'è di sbagliato nel mio servizio?

Grazie per l'aiuto Enyra

È stato utile?

Soluzione

Ho trovato il problema, che è molto trucco. L'endpoint client MSMQ utilizza una configurazione di legame con, in modo che il servizio di coda delle lettere ha anche bisogno di un legame che definisce la modalità di sicurezza a nessuno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top