Pregunta

Estoy en el proceso de aprendizaje de WCF, y como ejercicio práctico que he decidido escribir envoltorio genérico para la clase ServiceHost. La idea es tener una clase como la siguiente:

public class Host<I(nterface), S(ervice)>
    where S : I, new()
{
    /**/

    ServiceHost mServiceHost;
    S mServiceInstance = new S();
}

Cuando el tipo I es la interfaz con el atributo [ServiceContract] y el tipo S es el servicio que está implementando la interfaz mencionado.

He creado un servicio de tipo hola-mundo auxiliar en el tiempo medio para poner a prueba mi clase sobre la marcha.

En el constructor del anfitrión que he instancia del ServiceHost interna como esto:

mServiceHost = new ServiceHost(mServiceInstance);

He añadido un extremo de servicio:

mServiceHost.AddServiceEndPoint(typeof(I), new BasicHttpBinding(), new Uri("http://localhost:40000/MyTestService"));

un poco más tarde que he abierto el anfitrión, puesto en marcha mi solicitud e intento para ver si mi navegador indicará un servicio presente en el "http: // localhost: 40000 / MyTestService" - Tengo una página en blanco y todos los intentos para agregar una referencia de servicio falló.

He añadido más tarde el mismo Uri al constructor de la ServiceHost:

mServiceHost = new ServiceHost(mServiceInstance, new Uri("http://localhost:40000/MyTestService"));

segundo argumento del constructor es que sea:

params string[] baseAddresses 

o

params Uri[] baseAddresses

En cualquier caso, la presencia de la palabra clave "params" me dice que este parámetro es opcional.

He reacitvated mi aplicación, y (usando el navegador) navegado a la URI. La página de servicio apareció. Con todo - que está funcionando pero no de la manera que esperaba, me parece que falta algo.

Preguntas:

  1. ¿Por qué fracasó el servicio cuando no suministró los baseAddresses opcionales parámetro en el constructor ServiceHost - al tratar de alimentar a las direcciones, mientras que la adición de los extremos de servicio

  2. ¿Puedo conseguir mi objetivo "la forma en que inicialmente quería que fuera"?

Saludos, y esperando tener noticias de cualquier expertos WCF pronto (tm).

¿Fue útil?

Solución

Greg Sansom respondió a su primera pregunta. En cuanto a la segunda se puede hacer: por favor, echar un vistazo a las clases ServiceModelEx de Juval Lowy (especialmente ServiceHost) descargar aquí que contiene varias clases útiles para WCF

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top