У меня есть настройка очереди транзакций MSMQ на сервере THOR. Я могу отправлять сообщения в эту очередь с рабочей станции со следующим кодом:
var queue = new MessageQueue("FormatName:Direct=OS:thor\\private\\myqueue");
using (var tx = new MessageQueueTransaction())
{
tx.Begin();
queue.Send("test", tx);
tx.Commit();
}
Однако, когда я пытаюсь подключиться с помощью WCF, мои сообщения никогда не появляются в очереди. Вот конфигурация, которую я использую:
<system.serviceModel>
<bindings>
<netMsmqBinding>
<binding name="ClientNewsFeedServiceBinding" durable="true" exactlyOnce="true">
<security mode="None" />
</binding>
</netMsmqBinding>
</bindings>
<client>
<!-- NewsFeed Service -->
<endpoint name="INewsFeedService"
address="net.msmq://thor/private/myqueue"
binding="netMsmqBinding"
bindingConfiguration="ClientNewsFeedServiceBinding"
contract="Service.Contract.INewsFeedService" />
</client>
</system.serviceModel>
И код:
using (var tx = new TransactionScope())
{
var cf = new ChannelFactory<INewsFeedService>("INewsFeedService");
var service = cf.CreateChannel();
service.TestMessage("test");
((IChannel)service).Close();
tx.Complete();
}
Я не получаю никаких исключений, но в очереди на THOR нет сообщений. Любые идеи? Я даже не знаю, как отладить это, поскольку он просто не работает.
UPDATE
Если я изменю свой URI MSMQ на 'net.msmq: // localhost / private / myqueue', он отправит сообщение на локальный транзакционная очередь, которую я настроил. Настройка самой очереди идентична (например, я выполнил те же шаги для создания очереди localhost и THOR).