我有一个远程专用队列,我可以毫无问题地写入它。 我正在尝试创建一个 WAS 托管的 WCF 服务来提取数据进行处理。 我需要服务与队列位于不同的计算机上;我目前将其与编写服务放在同一站点中 - 相同的应用程序池但不同的应用程序。
我所针对的队列称为PersistenceService/Log.svc
,并且是事务性和身份验证的。 我的服务正在 http://appdev.me.com/PersistenceService/Log.svc
运行。 下面包含我的终结点和绑定:
<bindings>
<msmqIntegrationBinding>
<binding exactlyOnce="true" durable="true" serializationFormat="Xml" maxReceivedMessageSize="2147483647"
closeTimeout="00:00:30" sendTimeout="00:00:30" receiveTimeout="00:00:30" timeToLive="24:00:00"
receiveRetryCount="1" maxRetryCycles="1" retryCycleDelay="00:10:00" receiveErrorHandling="Move">
<security mode="Transport" />
</binding>
</msmqIntegrationBinding>
</bindings>
<services>
<service name="Me.Logging.Persistence.PersistenceService">
<endpoint address="msmq.formatname:DIRECT=OS:DIRECT=OS:meserverprivate$persistenceservice/log.svc"
binding="msmqIntegrationBinding"
bindingNamespace="http://me.logging/services/2012/11"
contract="Me.Logging.Service.Shared.Service.Contracts.ICatchAll" />
</service>
</services>
我得到的错误如下:
An error occurred while opening the queue:The remote computer is not available. (-1072824215, 0xc00e0069). The message cannot be sent or received from the queue. Ensure that MSMQ is installed and running. Also ensure that the queue is available to open with the required access mode and authorization.
我通过关闭迈克菲为通信扫清了道路,这样它就不会阻塞流量。 我已暂时授予对队列的匿名登录访问权限 - 尽管它应该以我写入队列的同一用户身份进入,并且该用户对队列具有完全权限。
WCF 跟踪不会显示此错误以外的任何内容。 任何关于去哪里看的想法将不胜感激。
您的端点看起来不正确。 你有两次"DIRECT=OS:"。 尝试:
<endpoint address="msmq.formatname:DIRECT=OS:meserverprivate$persistenceservice/log.svc"
binding="msmqIntegrationBinding"
bindingNamespace="http://me.logging/services/2012/11"
contract="Me.Logging.Service.Shared.Service.Contracts.ICatchAll" />