webconfig should not net launchsettings enabled dotnet development deployed asp applications asp.net-core environment-variables production-environment

asp.net core - should - ¿Cómo configurar ASPNETCORE_ENVIRONMENT para que se considere para publicar una aplicación básica asp.net?



net core configure (7)

Cuando publico mi aplicación web central asp.net en mi sistema de archivos local, siempre toma la variable config-producción y ASPNETCORE_ENVIRONMENT con el valor = "Producción".

¿Cómo y dónde debo establecer el valor de la variable ASPNETCORE_ENVIRONMENT para que se considere no solo para la depuración, sino también para la publicación ? Ya probé las siguientes opciones sin éxito:

  • en la configuración de windows
  • en archivo .pubxml
  • en launchSettings.json
  • en project.json

Además de las opciones mencionadas anteriormente, hay un par de otras soluciones.

1. Modificación del archivo del proyecto (.CsProj)

MSBuild admite la propiedad EnvironmentName que puede ayudar a establecer la variable de entorno correcta según el entorno que desea implementar. El nombre del entorno se agregaría en web.config durante la fase de publicación.

Simplemente abra el archivo del proyecto (* .csProj) y agregue el siguiente XML.

<!-- Custom Property Group added to add the Environment name during publish The EnvironmentName property is used during the publish for the Environment variable in web.config --> <PropertyGroup Condition=" ''$(Configuration)'' == '''' Or ''$(Configuration)'' == ''Debug''"> <EnvironmentName>Development</EnvironmentName> </PropertyGroup> <PropertyGroup Condition=" ''$(Configuration)'' != '''' AND ''$(Configuration)'' != ''Debug'' "> <EnvironmentName>Production</EnvironmentName> </PropertyGroup>

El código anterior agregaría el nombre del entorno como Development para la configuración de depuración o si no se especifica ninguna configuración. Para cualquier otra configuración, el nombre del entorno sería Production en el archivo web.config generado. Más detalles here

2. Agregar la propiedad EnvironmentName en los perfiles de publicación.

También podemos agregar la propiedad <EnvironmentName> en el perfil de publicación. Abra el archivo de perfil de publicación que se encuentra en Properties/PublishProfiles/{profilename.pubxml} Esto establecerá el nombre del entorno en web.config cuando se publique el proyecto. Más detalles here

<PropertyGroup> <EnvironmentName>Development</EnvironmentName> </PropertyGroup>

3. Opciones de línea de comando usando dotnet Publish

Además, podemos pasar la propiedad EnvironmentName como una opción de línea de comando al comando de dotnet publish . El siguiente comando incluiría la variable de entorno como Development en el archivo web.config.

dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development


Así es como podemos establecer en tiempo de ejecución:

public class Program { public static void Main(string[] args) { Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development"); BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build(); }


Con la última versión de dotnet cli (2.1.400 o superior), puede configurar esta propiedad msbuild $(EnvironmentName) y las herramientas de publicación se encargarán de agregar ASPNETCORE_ENVIRONMENT a web.config con el nombre del entorno.

Además, el soporte XDT está disponible a partir del 2.2.100-preview1.

Muestra: https://github.com/vijayrkn/webconfigtransform/blob/master/README.md


Debe seguir las instrucciones proporcionadas en la documentación , utilizando web.config .

<aspNetCore processPath="dotnet" arguments="./MyApp.dll" stdoutLogEnabled="false" stdoutLogFile="//?/%home%/LogFiles/aspnetcore-stdout"> <environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" /> <environmentVariable name="CONFIG_DIR" value="f:/application_config" /> </environmentVariables> </aspNetCore>

Tenga en cuenta que también puede establecer otras variables de entorno.

El Módulo principal de ASP.NET le permite especificar variables de entorno para el proceso especificado en el atributo processPath al especificarlas en uno o más elementos secundarios environmentVariable de un elemento de colección environmentVariables en el elemento aspNetCore. Las variables de entorno establecidas en esta sección tienen prioridad sobre las variables de entorno del sistema para el proceso.


Lo encontré funcionando para mí configurando esta variable directamente en Azure Platorm (si la usa). Simplemente seleccione su aplicación web -> configuración -> configuración de la aplicación y agregue la variable y su valor, luego presione el botón Guardar.


Manera simple de configurarlo en Visual Studio IDE.

Proyecto> Propiedades> Depuración> Variables de entorno


Opción 1:

Para establecer la variable de entorno ASPNETCORE_ENVIRONMENT en Windows,

Línea de comando - setx ASPNETCORE_ENVIRONMENT "Development"

PowerShell - $Env:ASPNETCORE_ENVIRONMENT = "Development"

Para otros sistemas operativos, consulte esto: docs.microsoft.com/en-us/aspnet/core/fundamentals/environments

Opcion 2:

Si desea configurar ASPNETCORE_ENVIRONMENT usando web.config , agregue aspNetCore manera:

<configuration> <!-- Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380 --> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="./MyApplication.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile="./logs/stdout" forwardWindowsAuthToken="false"> <environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> </environmentVariables> </aspNetCore> </system.webServer> </configuration>