2009-10-08 21 views
8

¿Alguien puede ayudar?Biblioteca Unity y WCF: ¿Dónde cargar la unidad en una biblioteca wcf?

He creado una biblioteca de WCF (no aplicación) y que será el anfitrión de esta página en un SVC IIS ..

pero yo estaba esperando para cargar las cosas en su lugar la unidad genérica ... podría cargarlo en el archivo.asax global, pero luego está vinculado al contenedor Asp.net de IIS y al hacer TDD esta parte no se ejecutará, por lo que no funcionaría mi resolución.

Biblioteca WCF es una clase pura, así que dudo que pueda usar cualquier evento como OnStartup, etc.

La única forma en que pensaba de lo que tiene el servicio heredan de una clase base y la interfaz que exigiría una clase estática de algún tipo y realizar el arranque de la unidad ..

estoy un poco perdido, ¿Es esta la única manera o hay alguna forma que desconozco?

Básicamente, la idea es ... ¿Quién llama a la biblioteca WCF entonces la inyección de la unidad tiene que suceder ..

¿Alguna idea?

Gracias

Respuesta

5

Existen varias formas de abordar este problema. Aquí está usted dos mejores opciones:

Puede crear una ServiceHost costumbre y anular InitializeRuntime

puede crear una clase llamada ApplicationStart en su directorio App_Code con un método estático público AppInitialize (que es un poco de olor, aunque):

public static class ApplicationStart 
{ 
    public static void AppInitialize() 
    { 
     // Initialise IoC container 
    } 
} 

Wenlong Dong tiene el other methods on his blog.

+0

gracias, voy a utilizar InitializeRuntime –

0

Se puede utilizar un IInstanceProvider para crear objetos de servicio utilizando la Unidad u otro contenedor COI. Consulte this entradas de blog para obtener detalles sobre cómo hacerlo.

A continuación puede usar un IContractBehavior implementado como un Atributo para agregar el IInstanceProvider al DispatchRuntime configurando InstanceProvider en el método ApplyDispatchBehavior.

0

Ahora hay un paquete de código abierto NuGet llamado Unity.WCF que puede encargarse de esto por usted.

Consulte http://unitywcf.codeplex.com/ para obtener más información y código fuente.

Cuestiones relacionadas