У меня есть служба WCF, которая использует связь MSMQ. Когда я запускаю службу в локальной сети, я настраиваю конечные точки службы в файлах конфигурации клиента так, чтобы они указывали на хост-компьютер, например, если конечная точка указана на хосте службыis:
<endpoint address="net.msmq://localhost/private/MsmqService/MyMsmqService"
binding="netMsmqBinding" bindingConfiguration="test" contract="MsmqService.IMyMsmqService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
Я настраиваю свой клиент для отправки сообщений на эту конечную точку:
<endpoint address="net.msmq://192.168.1.5/private/MsmqService/MyMsmqService"
binding="netMsmqBinding" bindingConfiguration="test" contract="MsmqService.IMyMsmqService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
Очевидно, 192.168.1.5 - это IP-адрес хост-компьютера, это работает как чудо.Я размещаю свой сервис в IIS 7, активирую прослушиватель MSMQ в IIS, даю соответствующее право доступа и т. Д. ( Почти все в статье Тома Холландера ), и я даже могу получить доступ к своему сервису через http в своем браузере, ноКогда я создаю клиентов моей службы, размещенной в IIS, и настраиваю конечные точки на клиенте App.config
, естественно, я настраиваю своих клиентов так:
<endpoint address="net.msmq://ServiceHostPublicIP/private/MsmqService/MyMsmqService"
binding="netMsmqBinding" bindingConfiguration="test" contract="MsmqService.IMyMsmqService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
Вот где что-то идет не так.Сообщения, которые я отправляю, продолжают помещаться в очередь в исходящей очереди на клиентском компьютере: DIRECT=OS:[ServiceHostPublicIP]\private$\MsmqService\MyMsmqService
, и состояние очереди всегда: «Ожидание соединения».Я попытался установить протокол передачи очереди на SRMP
, мое имя очереди совпадает с именем моей службы, как того требует IIS, и я дал соответствующие разрешения для очереди.Кто-нибудь недавно сталкивался с этой проблемой раньше?Есть идеи?Было бы здорово, если бы кто-то мог поделиться рабочим образцом MSMQ через HTTP, если бы он имел его.
Любая помощь будет принята с благодарностью.Заранее спасибо.