2010-03-03 6 views
0

Я пытаюсь создать сервис, читающий мертвую букву из очереди мертвой буквы транзакционной системы.Как создать службу мертвых букв WCF для MSMQ3.0

Конфигурация службы выглядит следующим образом:

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

Мой интерфейс сервиса:

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

С моей реализации услуг:

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

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

    #endregion 
} 

И начать хозяина, как это:

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

До сих пор все выглядит так, как описано во многих книгах и учебниках, но когда я создаю мертвые буквы в транзакционной очереди с мертвой буквой, услуга не запускается. Что не так в моей службе?

Спасибо за помощь Enyra

ответ

0

Я нашел проблему, которая является довольно трюк. Конечная точка клиента msmq использует конфигурацию привязки, поэтому службе очереди с мертвой буквой также требуется привязка, которая определяет режим безопасности равным нулю.