我有使用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)
答案 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证书。