the net asp asp.net web-config config release asp.net-core

the - Cómo manejar las transformaciones de configuración de debug/release en ASP.NET vNext



the asp net core module is required to host asp net core projects in iis express (3)

De forma predeterminada, ASP.NET buscará una variable de entorno llamada "ASPNET_ENV" para establecer la variable EnvironmentName de IHostingEnvironment.

El código relevante se puede ver aquí:

https://github.com/aspnet/Hosting/blob/77e2dc263f11655312d4c73bb8e22d7b6254d485/src/Microsoft.AspNet.Hosting/HostingFactory.cs

Podría hacer algo como lo siguiente si cambia el valor de ASPNET_ENV en los servidores en sus diversos entornos:

var configuration = new Configuration() .AddJsonFile("config.json") .AddEnvironmentVariables(); if (string.Equals(env.EnvironmentName, "Prod", StringComparison.OrdinalIgnoreCase)) { configuration.AddJsonFile("prod.config.json"); }

En versiones anteriores de ASP.NET, muchos de nosotros Web.Debug.config Web.Release.config archivos Web.Debug.config / Web.Release.config que se verían de la siguiente manera:

Web.config :

<connectionStrings> <add name="AppDB" connectionString="Data Source=(LocalDb)//..." /> </connectionStrings>

Web.Release.config :

<connectionStrings> <add name="AppDB" connectionString="Data Source=(ReleaseDb)//..." xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> </connectionStrings>

De acuerdo con ASP.NET vNext tutorial , todavía puede usar Web.config. Pero config.json parece ser la nueva forma de manejar configuraciones ahora según el mismo artículo:

config.json

{ "Data": { "DefaultConnection": { "ConnectionString": "Server=(localdb)//..." } } }

Y en Startup.cs :

var configuration = new Configuration(); configuration.AddJsonFile("config.json"); configuration.AddEnvironmentVariables();

Así que me pregunto cuál sería la forma sugerida para manejar la configuración de la transformación con este cambio a json.


Mientras que la (s) respuesta (s) anterior (es) ofrece una buena solución, me gustaría presentar una alternativa:

Código

var configuration = new Configuration() .AddJsonFile("config.json") .AddEnvironmentVariables();

Entorno local: Aquí tienes el archivo "config.json" con todas las configuraciones. Es fácilmente editado y mantenido.

Entorno Prod : Al implementar, omite el archivo "config.json". Como falta, el código buscará la siguiente fuente en la cadena, que son las variables de entorno. Por lo tanto, cuando esté en su máquina local, use el archivo de configuración. Cuando esté en el servidor, vuelva a las variables de entorno. Tenga en cuenta que, obviamente, las claves de configuración deben tener el mismo nombre en el archivo y las variables de entorno.


vNext utiliza un nuevo sistema de configuración en el que puede leer las variables de entorno a través del código. Por lo tanto, en este caso, debe verificar la presencia de la variable de entorno adecuada e incluir el código JSON correspondiente.

Por ejemplo, puede crear un qa.json y prod.json. Establezca una variable de entorno, por ejemplo, "ENV" que apunte a "qa" y "prod" en esos entornos respectivos. Luego condicionalmente puede agregar el JSON apropiado.

El código podría verse así:

1) default.json contiene todas tus cosas predeterminadas.

2) qa.json y prod.json contienen las modificaciones necesarias.

3) Como qa.json y prod.json llegan más tarde, ganarán. Si hay un "setting1" en default.json y qa.json, automáticamente recogerá el "setting1" en qa.json

var configuration = new Configuration() .AddJsonFile("default.json") .AddEnvironmentVariables(); var envSpecificJson = configuration.Get("ENV") + ".json"; configuration.AddJsonFile(envSpecificJson);