【发布时间】:2012-03-18 06:47:39
【问题描述】:
我有一个使用 MSMQ 通信的 WCF 服务,当我在本地网络上运行该服务时,我将客户端配置文件中的服务端点配置为指向主机,例如,如果在服务主机上指定的端点是:
<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 中托管我的服务,我在 IIS 上激活 MSMQ 侦听器,提供适当的访问权限等 (Pretty much everything in Tom Hollanders article),我什至可以在浏览器中通过 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 要求的服务名称相同,并且我已对队列授予了适当的权限。有没有人最近遇到过这个问题?有任何想法吗?如果有人可以通过 HTTP 共享 MSMQ 的工作示例(如果他们有的话),那就太好了。
任何帮助将不胜感激。提前致谢。
【问题讨论】:
标签: wcf iis-7 msmq netmsmqbinding