Auto organizadas servicio WCF - un comportamiento confuso
-
14-10-2019 - |
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:
-
¿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
-
¿Puedo conseguir mi objetivo "la forma en que inicialmente quería que fuera"?
Saludos, y esperando tener noticias de cualquier expertos WCF pronto (tm).
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