web-config - how - porta azure
Azure web.config por entorno (5)
Actualmente estoy enfrentando problemas al usar un Web.Debug.config con la transformación XSLT. No parece funcionar en Azure ...
Depende de si desea que funcione en su máquina local o dentro de una integración continua.
- Para la máquina local intenté responder aquí: https://stackoverflow.com/a/9393533/182371
- Para la integración continua , es aún más fácil. Cuando construya desde la línea de comando especificando el valor de la propiedad de Configuración, sus configuraciones serán transformadas (sin importar lo que haga cuando construya dentro de VS). Por lo tanto, especificar adecuadamente las configuraciones de compilación tanto para la nube como para el proyecto web le dará la salida correcta en función de los parámetros de compilación.
Tengo un proyecto de Azure (Azure 1.3) en VS2010. Hay 2 webroles, un proyecto de página web y un proyecto WCF. En el modo de depuración, quiero que el proyecto web use un web.config para el entorno DEV, y cuando se debe publicar el web.config para PROD.
Cuál es la mejor manera de hacer esto ?
Actualmente estoy enfrentando problemas al usar un Web.Debug.config con la transformación XSLT. No parece funcionar en Azure ...
Estoy de acuerdo con Mose, excelente pregunta!
Visual Studio 2010 incluye una solución para este tipo de problema, web.config transforma. Si nos fijamos en su rol web, notará que incluye Web.Debug.config y Web.Release.config junto con el tradicional web.config. Estos archivos se usan para transformar web.config durante la implementación.
El ejemplo canónico es "Necesito diferentes cadenas de conexión de base de datos para el desarrollo y lanzamiento", pero también se adapta a su situación.
Existe una excelente publicación de blog del Visual Web Developer Team que explica cómo usar esta característica (no se moleste con los documentos de MSDN, sé cómo funciona y aún no entiendo los documentos). Consulte http://blogs.msdn.com/b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx
Me gusta esta pregunta!
Para los roles de los trabajadores, resolví este problema detectando el entorno en tiempo de ejecución y lanzando mi ''aplicación'' en un nuevo AppDomain con una configuración personalizada:
- bot.cloud.config
- bot.dev.config
- bot.win.config
¡Esto es increíblemente eficiente !
Me gustaría hacer lo mismo con los proyectos web, porque usar la configuración específica de Azure es un montón de problemas:
- Ambas configuraciones no están en el mismo lugar, lo que consume mucho tiempo cuando se depura
- Tienes que aprender una nueva forma de escribir algo que debería ser estándar
- En algún momento se preguntará si la aplicación falló en web.config debido a un estúpido error de sintaxis
Todavía estoy buscando la manera correcta de hacerlo, como en esta publicación
Otra posible solución es tener dos proyectos de CloudService, cada uno con ServiceConfiguration.cscfg (dev / prod) específico. Desarrolle usando Dev, pero implemente Prod.
Resuelve tu problema de otra manera. Piense en el hecho de que web.config siempre es estático y nunca cambia cuando se trabaja con Azure. Lo que sí cambia es tu ServiceConfiguration.cscfg.
Lo que hemos hecho es crear nuestro propio proveedor de configuración que comprueba primero ServiceConfiguration.cscfg y luego recurre a web.config si la cadena de configuración / conexión no está allí. Esto nos permite ejecutar servidores en IIS / WCF directamente durante el desarrollo y luego tener diferentes configuraciones cuando se implementan en Azure. Hay algunas circunstancias donde tiene que usar web.config (sí, me refiero a WCF aquí) y en esos casos debe escribir código y crear convenciones en lugar de almacenar todo en web.config. Tengo una publicación de blog donde muestro un ejemplo de cómo hice esto al tratar con WIF (Windows Identity Foundation) y Azure.