Implementación del servicio WCF: ¿dónde se guardan los archivos de la aplicación?

StackOverflow https://stackoverflow.com/questions/608735

  •  03-07-2019
  •  | 
  •  

Pregunta

Tengo un servicio WCF que llama, a través de un BL, una capa de datos y, en última instancia, un servidor de SQL Server. Mi servicio expone varios métodos / operaciones para obtener datos de la base de datos. También he creado un host para su prueba y un Host de servicio de Windows, que es como planeo implementarlo.

Ayer, cuando hice un despliegue de prueba, el servicio comenzó bien, pero no tuve la oportunidad de ver si los datos se estaban procesando correctamente. Aquí está la cosa: mi entorno de prueba de implementación (MS Server 2003) es totalmente diferente a mi propio entorno de prueba local (portátil). Implementé copiando los contenidos de bin \ debug del proyecto de Servicio de Windows en el servidor y haciendo referencia al archivo .exe allí cuando usé InstallUtil.exe. Pero la conexión de datos para el DL debería tomar una cadena de conexión diferente, obviamente, ya que debería conectarse a la base de datos del servidor, no a mi computadora portátil. Sin embargo, el único app.config que veo en el directorio que implementé es el del servidor de servicios. Los otros proyectos, como el DL y BL, también están allí como DLL, pero no hay app.config para ninguno de los dos. Entonces, ¿cómo puedo reemplazar el app.config para el DL con el correcto para ese entorno? Estoy seguro de que este es un problema simple en el que no estoy trabajando.

Una pregunta relacionada: si decidimos más adelante que queremos usar un host HTTP en lugar de, o además de, TCP, ¿puedo ejecutar un segundo host que desactiva ese mismo servicio? ¿Necesito implementar el host con IIS y agregar un nodo de servicio a la aplicación.configs?

¿Fue útil?

Solución

App.config para el entorno de alojamiento, en este caso el servicio administrado de Windows, contiene la configuración de todos sus módulos. De manera similar, Web.config contiene todas las configuraciones si lo aloja en IIS.

Otros consejos

Cuando implementes un proyecto, el único app.config / web.config que obtendrás es el que está en tu proyecto ejecutable (sitio web / console app / windows service / windows forms app / etc. project). Cualquier app.configs para proyectos DLL no se copiará en el directorio bin.

Tendrá que copiar las secciones de configuración de sus proyectos DLL y ponerlas en su proyecto de servicio app.config.

Para su segunda pregunta, puede alojar diferentes puntos finales para el mismo servicio en el mismo ServiceHost. Puede alojar un punto final HTTP en una aplicación de consola / servicio de Windows. Si aloja HTTP fuera de IIS, es posible que deba otorgar permisos a su usuario para permitirle abrir un puerto HTTP. (consulte http://msdn.microsoft.com/en-us/library/ ms733768.aspx ). Para HTTP, su vida podría ser un alojamiento más sencillo en IIS, pero funciona en un simple servidor de servicio.

<system.serviceModel>
    <services>
        <service name="MyServiceTypes.MyService">
            <endpoint address="http://localhost:44444/MyService"
                      binding="basicHttpBinding"
                      contract="MyServiceTypes.IMyService" />

            <endpoint address="net.tcp://localhost:55555/MyService"
                      binding="netTcpBinding"
                      contract="MyServiceTypes.IMyService" />
        </service>
    </services>
</system.serviceModel>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top