【问题标题】:wcf msmq service activation failswcf msmq 服务激活失败
【发布时间】:2009-07-18 19:46:49
【问题描述】:

我有使用 net.msmq 协议的 wcf 服务,但服务无法激活并出现以下错误。有什么问题?

看起来它正在尝试在 AD 中查找 machineid 或其他内容,但为什么呢? 服务名称类似于 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)

【问题讨论】:

  • 确认我没有连接到广告,但应用程序也不会连接,并且不需要来自广告的任何内容。

标签: wcf msmq


【解决方案1】:

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

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

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

这样,您应该能够在不访问 AD 的情况下调用 MSMQ。

马克

【讨论】:

    【解决方案2】:

    也许它需要检查 AD 才能写入消息队列。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-10
        • 2010-11-14
        • 1970-01-01
        相关资源
        最近更新 更多