2010-03-25 12 views
6

Tengo problemas con mi servicio WCF. Necesito hacer una inyección de contenedor windsor pre application_start y noté que puedo usar el método AppInitialise. Se trabaja en la depuración de Visual Studio pero cuando despliego a IIS el código no ser despedido .. Me inicializar la clase de la siguiente maneraEnganche en AppInitialize con el servicio WCF

public static class Class1 
{ 
    public static void AppInitialize() 
    { 
     IWindsorContainer container; 
     container = new WindsorContainer("windsor.xml"); 
     container.AddFacility<WcfFacility>(); 
     container.Resolve<ProfileLookUpService>(); 
    } 
} 

¿Hay alguna tarea especial que tengo que hacer para conseguir que esto funcione en IIS. Estoy usando la versión 6.

¡Gracias!

Respuesta

4

Bueno, tiene que ser consciente de varias cosas:

  • un servicio WCF podría ser alojado en sí mismo - que no siempre es alojado en IIS, por lo que no se basan en un mecanismo específica de IIS, si alguna vez posible

  • un servicio WCF en el lado del servidor, básicamente, consiste en una ServiceHost (o un descendiente de encargo de los mismos), que inicializa el tiempo de ejecución de WCF, y se creará instancias de la clase de servicio según sea necesario para manejar las peticiones

Así que realmente depende de dónde quieras inyectar tus cosas; mi instinto me dice que probablemente estés interesado en la capacidad de crear un descendiente de ServiceHost personalizado, y engancharte en algunos de sus métodos y eventos para manejar tu inicialización .

Salida muy buenos artículos y blog sobre el tema aquí:

+0

Si quiero (servicio WCF) construir una conexión de socket persistente con un host siempre que se inicie el servicio WCF, ¿puede sugerir/aconsejar cómo hacerlo? Como mencionó en su respuesta, no deberíamos confiar en un mecanismo específico de IIS. – FaizanRabbani

-1

Si AppInitialize() no se llama en el inicio de su servidor de implementación, a continuación, lo más probable es que no haya habilitado la activación WCF Non-Http en ese servidor.

Ir al panel de control> Programa y características> Activar o desactivar las características de Windows y luego buscar 'Microsoft .NET Framework 3.5.1'. En esta opción, asegúrese de que la opción de activación de Windows Communication Foundation no HTTP esté instalada.

Cuestiones relacionadas