wcf msmq服务激活失败

时间:2009-07-18 19:46:50

标签: wcf msmq

我有使用net.msmq协议的wcf服务但是服务无法激活并出现以下错误。可能有什么不对?

看起来它试图在AD中找到机器人或其他东西,但为什么? 服务名称类似于net.msmq://localhost/private/myservice.svc

  A connection with Active Directory cannot be established. Verify that there are sufficient permissions to perform this operation.

System.Messaging.MessageQueue.GetMachineId(String machineName)
System.Messaging.MessageQueueCriteria.set_MachineName(String value)
System.Messaging.MessageQueue.GetPublicQueuesByMachine(String machineName)
System.ServiceModel.Channels.MsmqBindingMonitor.OnTimer(Object state)

3 个答案:

答案 0 :(得分:2)

您有哪些安全设置?默认情况下,MSMQ绑定将期望用户提供证书以对其进行身份验证,并且需要访问AD以验证该证书。

如果您想完全关闭所有安全性,请将此代码段添加到您的配置中:

<bindings>
  <netMsmqBinding>
    <binding name="NoSecurity">
      <security mode="off" />
    </binding>    
  </netMsmqBinding>
</bindings>
<endpoint name="...." address="..." contract="....."
   binding="netMsmqBinding" bindingConfiguration="NoSecurity" />

这样,你应该可以在不访问AD的情况下调用MSMQ。

马克

答案 1 :(得分:1)

可能需要检查AD才能写入消息队列。

如果您在无法访问AD的本地帐户下运行,则可能会收到此错误。

答案 2 :(得分:1)

当我的WCF服务由作为LocalSystem或NetworkService帐户运行的Windows服务托管时,我遇到此错误。将Windows服务更改为在交互式登录帐户下运行,例如我自己的帐户或我仅为托管MSMQ-WCF Windows服务创建的帐户,可以消除此问题。

我认为错误与WCF无关,而是没有交互式登录的服务可以自动检索允许WCF代码与MSMQ通信的AD证书。