У меня есть транзакционная очередь 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 нет сообщений, размещенных в очереди.,Есть идеи?Я даже не знаю, как отладить это, так как это просто молча терпит неудачу.
ОБНОВЛЕНИЕ
Если я изменю свой MSMQ URI на 'net.msmq: // localhost/ private / myqueue ', то он отправит в локальную очередь транзакций, которую я настроил.Настройка самой очереди идентична (например, я выполнил те же шаги для создания очередей localhost и THOR).