2010-01-28 31 views
7

He creado un servicio WCF utilizando el enlace NetMsmq para el que creé una cola privada en mi máquina y ejecuté el proyecto. Esto funciona bien como tal y mi servicio WCF se inicia y accede al mensaje usando la cola en el entorno de depuración. Ahora, quería alojar el servicio usando el servicio de Windows y para el mismo, creé un nuevo proyecto e instalador de Windows también (Este servicio se ejecuta en la Cuenta del sistema local). Luego intenté instalar este servicio de Windows usando el comando InstallUtil a través del símbolo del sistema. Cuando la instalación está sucediendo y durante la apertura de host de servicio, consigo un dicho excepción:Servicio Msmq y WCF

There was an error opening the queue. Ensure that MSMQ is installed and running, the queue exists and has proper authorization to be read from. The inner exception may contain additional information. 
Inner Exception System.ServiceModel.MsmqException: An error occurred while opening the queue:Access is denied. (-1072824283, 0xc00e0025). The message cannot be sent or received from the queue. Ensure that MSMQ is installed and running. Also ensure that the queue is available to open with the required access mode and authorization. 
    at System.ServiceModel.Channels.MsmqQueue.OpenQueue() 
    at System.ServiceModel.Channels.MsmqQueue.GetHandle() 
    at System.ServiceModel.Channels.MsmqQueue.SupportsAccessMode(String formatName, Int32 accessType, MsmqException& msmqException) 

Podría alguien sugerir la posible solución para el problema anterior? ¿Me faltan los permisos para configurar la cola y el servicio de Windows? De ser así, ¿podría sugerir dónde deberían agregarse estos permisos?

Respuesta

4

Sí, parece un problema de permisos.

Haga clic con el botón derecho en su cola privada desde el Administrador del servidor y seleccione Propiedades. Vaya a la pestaña Seguridad y asegúrese de tener los permisos correctos allí para su Cuenta del sistema local.

Esto también se confirma en el artículo de Nicholas Allen: Diagnosing Common Queue Errors, donde el autor define el código de error 0xC00E0025 como un problema de permisos.

+0

Gracias por la respuesta Daniel. He intentado dar todos los permisos relevantes para la cuenta de la máquina que está presente en la lista si eso es lo que se conoce como la cuenta del sistema local. Pero aún obtengo el mismo error. La cola privada que se ha creado tiene mi inicio de sesión de dominio como su propietario. No tengo ni idea de qué permisos tengo que configurar. ¿Podría sugerir si falta algún otro permiso posible? – Sowmya

+0

Sowmya, ¿lo hiciste funcionar? De lo contrario, consulte este enlace http://beyondrelational.com/blogs/ibhadelia/archive/2011/06/21/an-error-occurred-while-opening-the-queue-access-is-denied-msmq-exception. aspx – IBhadelia

2

Me encontré con el mismo problema, aquí está la solución.

Haga clic derecho en "Mi PC" -> Administrar. En la ventana Administración de equipos, vaya a "Servicios y aplicaciones -> Cola de mensajes -> cola ur", seleccione su cola y acceda a las propiedades. Agregue el usuario que ejecuta su aplicación ur WCF y otorgue acceso completo. Esto debería resolver el problema.

0

Puede ser simple porque el servicio no puede encontrar su cola. El nombre de la cola debe coincidir exactamente con la dirección del punto final.

Ejemplo:

net.msmq: //localhost/private/wf.listener_srv/service.svc

puntos a cola local

$ privada \ WF. listener_srv \ service.svc

Si el nombre de la cola y el punto final son según el otro, entonces es más como que las credenciales definidas en el IIS pool no otorgan acceso a la cola.