wcf MSMQ служба активации не удается - PullRequest
1 голос
/ 18 июля 2009

У меня есть служба wcf, использующая протокол net.msmq, но служба не активируется со следующей ошибкой. Что может быть не так?

Похоже, он пытается найти machineid или что-то в 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 ]

2 голосов
/ 19 июля 2009

Какие настройки безопасности у вас есть? По умолчанию привязка MSMQ предполагает, что пользователи предоставят сертификат для их аутентификации, и для проверки этого сертификата необходим доступ к AD.

Если вы хотите полностью отключить все средства безопасности, добавьте этот фрагмент в конфигурацию:

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

Таким образом, вы сможете звонить в MSMQ без доступа к AD.

Марк

1 голос
/ 25 июля 2009

У меня была эта ошибка, когда моя служба WCF размещена службой Windows, работающей под учетной записью LocalSystem или NetworkService. Изменение службы Windows для запуска под учетной записью интерактивного входа, такой как моя собственная учетная запись или учетная запись, которую я создаю только для размещения служб Windows MSMQ-WCF, устраняет эту проблему.

Я полагаю, что ошибка связана не с WCF, а с сервисом, не имеющим интерактивного входа в систему, который может автоматически получить сертификат AD, который позволит коду WCF взаимодействовать с MSMQ.

1 голос
/ 19 июля 2009

Возможно, необходимо проверить с помощью AD, чтобы иметь возможность записи в очередь сообщений.

Если вы работаете под локальной учетной записью, которая не имеет доступа к AD, вы можете получить эту ошибку.

...