He escrito un servicio web WCF simple que está configurado programáticamente. Expone tres criterios de valoración que se unen diferentes enlaces con el mismo contrato:Conversión de la configuración programática del servicio WCF al archivo de configuración
- WebHttpBinding
- WebHttpRelayBinding (sobre Microsoft Azure)
- Mybinding (hecho a sí mismo la unión en un DLL adicional)
El el código de configuración es bastante directo en este momento:
WebServiceHost host = new WebServiceHost(
typeof(MyService), new Uri("http://localhost:80/"));
host.AddServiceEndpoint(typeof(MyService), new WebHttpBinding(), "");
ServiceEndpoint sbEndpoint = host.AddServiceEndpoint(
typeof(MyService), new WebHttpRelayBinding(), "http://azureURL");
TransportClientEndpointBehavior sbBehavior =
new TransportClientEndpointBehavior();
sbBehavior.CredentialType = TransportClientCredentialType.UserNamePassword;
sbBehavior.Credentials.UserName.UserName = "azureUserName";
sbBehavior.Credentials.UserName.Password = "azurePassword";
sbEndpoint.Behaviors.Add(sbBehavior);
host.AddServiceEndpoint(typeof(MyService), new MyBinding(), "http://someURL");
host.Open();
Ahora Quiero exportar esta configuración en un archivo de configuración porque quiero poder cambiarlo sin tener que volver a compilar.
Mis preguntas en este momento son:
- ¿Dónde puedo encontrar información valiosa para lograr mi objetivo? La mayoría de los sitios solo hablan de enlaces SOAP: no se sabe cómo incluir un enlace no estándar.
- ¿Debo cambiar MyBinding para aceptar la configuración a través de app.config o la llama ServiceModel exactamente como mi enfoque programático cuando la configuración es correcta?
Gracias por explicar el proceso de creación del archivo de configuración. Como esperaba, la implementación del servicio también es el contrato. Lo he elegido porque el contrato consiste solo de dos funciones muy generales y no es reutilizable. Lo intenté primero solo con el enlace webHttpBinding y comenté la configuración programática existente. Sin embargo, no funciona. El servicio no es accesible cuando abro http: // localhost en mi navegador web. ¿Tengo que hacer algunas otras configuraciones para la aplicación en VS? (. Es una "aplicación de consola" estándar por el momento) – Etan
Bueno, un problema que se tiene es: para la unión del webHttp, necesita la WebServiceHost - para los otros enlaces, necesita la ServiceHost recta - por lo que probablemente no será capaz de alojar todos los puntos finales en un solo (servicio de Internet) ServiceHost –