2009-07-28 34 views
15

Tengo que usar servicios WCF que usan el protocolo net.msmq, alojado en IIS 7. Mi problema es que los servicios no se activan cuando aparece un nuevo mensaje en la cola, tiene que físicamente vaya a los servicios primero, antes de que comiencen a recoger cualquier mensaje.WCF net.msmq service auto activation

¿Hay alguna forma de activar estos servicios automáticamente?

Gracias de antemano por cualquier ayuda

Saludos cordiales, Brian

+0

tenemos el mismo problema, estoy abriendo una llamada de soporte con Microsoft para llegar al fondo de ellos cuestión. Me pregunto si hay una manera de saber el error exacto o la razón por la cual no está activando – user80855

Respuesta

3

Hay una muy buena serie de tres partes en conseguir WCF, MSMQ y IIS y correr y jugar muy bien juntos en el blog de Tom Hollander:

Tal vez los ayudará? MSMQ alojado en IIS7 definitivamente debe recoger los mensajes WCF automáticamente, si todo está configurado correctamente.

Hay algunas configuraciones que no vienen de la caja: vea la parte 1. Es posible que deba agregar y habilitar características adicionales de Windows, y podría necesitar ejecutar la herramienta appcmd.exe para configurar WAS (Servidor de Activación de Windows, parte de IIS7) para manejar automáticamente solicitudes que no sean http.

Marc

3

Sé que es una entrada antigua, pero en caso de que alguien venga por ese problema ...

Si el servicio no se activa una vez que el grupo de aplicaciones ha sido apagado, es más probable porque el nombre de la cola no coincide con el URI de servicio y, por lo tanto, WAS no sabe qué aplicación activar.

Así por ejemplo, si se crea una aplicación "Servicios" en el sitio web por defecto y tienen un FirstService.svc, el nombre de la cola debe ser privadas $ \ Servicios/FirstService.svc

[Editar: El nombre de la cola también debe contener el nombre de la aplicación en plural]

2

Esto se debe al hecho de que WAS no se activará automáticamente o se "calentará" cuando use MSMQ. Las soluciones son echar un vistazo al IIS 7 Warm Up module o tener algo así como un balanceador de carga haciendo ping a su servicio (estamos usando un dispositivo F5 para hacer esto). Actualización - aquí está el enlace para IIS 8 App Initialization

+0

. Tu enlace murió. ¿La inicialización de la aplicación IIS 8.0 es el reemplazo? –

+0

Sí, está en lo correcto –

+0

Esta solución funcionó para mí. En IIS 7.5, tendrá que descargar el módulo de inicialización de la aplicación como una instalación separada. –

0

Encontré que, en Windows 7 con IIS 7.5 y .NET 4.0, el servicio NetMsmqActivator está deshabilitado y detenido por defecto. Debe habilitarlo e iniciarlo.

Además, la cola debe permitir "Recibir mensaje" y "Consultar mensaje" para la cuenta utilizada por el grupo de aplicaciones y para la cuenta utilizada por NetMsmqActivator. En una instalación predeterminada, puede usar IIS APPPOOL\ASP.NET v4.0 (tendrá que escribirlo: eso es 3 'P's, tenga cuidado con los espacios) y NETWORK SERVICE.

0

Hemos estado observando este problema desde hace más de un mes en un sistema con estas propiedades:

  • servicios mixtos, http y msmq basa alojada en la ERA en el protocolo IIS7.5
  • msmq utilizado : net.msmq
  • servicios no lavar con manguera en el sitio web de la raíz, pero en el que se apliquen debajo

Hemos estado corriendo a través de todas las directrices y resolución de problemas relacionados con tecnicas: * Configuración de protocolo en iis y nivel de aplicación. * queue naming * configuración de seguridad de cola, servicios de windows y iis

Pero el problema persiste. Nuestra solución era seguir esto: http://www.daczkowski.net/tag/wcf/ Eso es instalar el AppFabric en nuestros IIS y configuración de los servicios de inicio automático.

El problema en sí es bastante difícil de definir por completo, lo que podemos decir es solamente que "a veces el servicio se detendrá el procesamiento de la cola"

-1

Sólo tienes que configurar la aplicación de inicio automático en 'Activado' en el IIS

0

Mi solución es una mezcla de algunas respuestas aquí. Mi cola tiene autenticación habilitada, por lo que algunos pasos pueden no ser necesarios si no se utiliza la autenticación.

Aquí son los pasos que sigo para ponerla a trabajar, en un Windows 2012:

1) Instalar http que no sea WAP servicios de activación (https://msdn.microsoft.com/en-us/library/ms731053(v=vs.110).aspx)

2) Crear cola con el mismo nombre que la aplicación de IIS, como este private$/<WCF application>/myservice.svc.

El servicio Net.Msmq Listener Adapter intentará hacer coincidir la cola y el nombre de la aplicación WCF en IIS como señala VdesmedT.

3) Habilitar protocolos en el lugar y aplicación.

En primer lugar crear el enlace:.

% windir% \ system32 \ inetsrv \ appcmd.exe establecer sitio "Sitio Web predeterminado" - + fijaciones [protocolo = 'net.tcp', bindingInformation =' 808: * ']

enlaces de sitio deben tener este aspecto: enter image description here

Luego activa el protocolo net.msmq para el sitio

% windir% \ system32 \ inetsrv \ appcmd.exe set config -section: system.applicationHost/sites "/ [name = 'Sitio Web predeterminado'] [path = '/'] enabledProtocols..": "http, net.msmq"/commit: apphost

Este comando reescribirá los protocolos, por lo que si tiene más de http habilitado, debe agregarlo a la línea de comandos.

En settins avanzadas debería ver esto:

enter image description here

Y finalmente activar el protocolo net.msmq para la aplicación.

% "Sitio Web predeterminado /" windir% \ system32 \ inetsrv \ appcmd.exe establecido aplicación /enabledProtocols:http,net.tcp

la pantalla Configuración avanzada para la aplicación debe mostrar la misma Lo que aparece en Configuración avanzada para el sitio, en la línea de protocolos habilitados.

4) Otorgue permisos en la cola para que la aplicación IIS lea, mire y elimine, obtenga propiedades y establezca las propiedades. La cuenta predeterminada es IIS apppool \ DefaulApp

5) Dar permiso vistazo en la cola para los servicios Net.Msmq Listener Adapter (por defecto es Network Service)

no debería ser necesario pero tuve que reiniciar después de cambiar los permisos.

Cheques:

  • para comprobar si WCF está configurado correctamente sólo tiene que utilizar el navegar por la aplicación WCF para activarlo. Cualquier mensaje en la cola debe ser procesado.

  • Para comprobar si WAS está activando la aplicación WCF, recicle el grupo de aplicaciones y envíe un nuevo mensaje. Si WAS funciona, debe procesarse inmediatamente.