2009-07-18 6 views
1

J'ai un service wcf utilisant le protocole net.msmq mais le service ne peut pas être activé avec l'erreur suivante. Quel pourrait être le problème?wcf L'activation du service msmq échoue

On dirait qu'il essaie de trouver machineid ou quelque chose dans AD mais pourquoi? nom Sevice est comme 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

Pour confirmer que je ne suis pas connecté à AD, mais l'application ne sera pas non plus et rien de l'annonce est nécessaire. – mamu

Répondre

2

Quels paramètres de sécurité avez-vous? Par défaut, la liaison MSMQ s'attend à ce que les utilisateurs présentent un certificat pour les authentifier et aient besoin d'accéder à AD pour vérifier ce certificat.

Si vous souhaitez désactiver totalement hors tout la sécurité, ajoutez ce bout à votre config:

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

De cette façon, vous devriez être en mesure d'appeler MSMQ sans accès à AD.

Marc

+0

Merci pour votre réponse – mamu

1

Peut-être qu'il a besoin de vérifier avec AD pour être en mesure d'écrire dans la file d'attente des messages.

Si vous exécutez sous un compte local qui n'a pas accès à AD, vous pouvez obtenir cette erreur.

1

J'ai eu cette erreur lorsque mon service WCF est hébergé par un service Windows qui est en cours d'exécution en tant que compte LocalSystem ou NetworkService. Modifier le service Windows pour qu'il s'exécute sous un compte de connexion interactif, comme mon propre compte ou celui que je crée uniquement pour héberger les services Windows MSMQ-WCF, élimine ce problème. Je crois que l'erreur n'est pas liée à WCF, mais plutôt le service n'ayant pas une connexion interactive qui peut récupérer automatiquement un certificat AD qui permettra au code WCF de communiquer avec MSMQ.