Soy nuevo en .NET Core y, por lo que veo en mi búsqueda en la web, appsettings.Development.json se usa para la configuración de desarrollo mientras se desarrolla la aplicación y appsettings.Production.json se usa en la aplicación publicada en el servidor de producción. Aquí está la parte de ejemplo que configuré en ambos:
appsettings.Desarrollo.json:
"ConnectionStrings": { "DefaultConnection": "Server=localhost,21433;Initial Catalog=DemoDbDev;User Id=demouser;Password=******;" },appsettings.Producción.json:
"ConnectionStrings": { "DefaultConnection": "Server=demo-prod-db,1433;Initial Catalog=DemoDbProd;User Id=demouser;Password=******;" },Aquí hay algunas preguntas que necesito que me aclaren:
1) ¿Cuál es el propósito de appsettings.json ? ¿Se usa para la configuración predeterminada o para otras configuraciones que no están en appsettings.Development.json o appsettings.Production.json ?
2) ¿El entorno está configurado en launchSettings.json en la carpeta Properties ? Si es así, ¿deberíamos actualizar manualmente este archivo antes de publicar la aplicación en el servidor de producción?
3) ¿Hay algo que deba tener en cuenta con respecto a las configuraciones del entorno de desarrollo y producción al desarrollar y publicar mi aplicación (en el servidor IIS o en el contenedor Docker)?
Cualquier ayuda sería realmente apreciada.
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-5.0
TLDR; Puede obtener el entorno de una variable de entorno o del archivo de configuración de inicio. Este último sólo se utiliza para el desarrollo local.
Para determinar el entorno de tiempo de ejecución, ASP.NET Core lee las siguientes variables de entorno:
DOTNET_ENVIRONMENT ASPNETCORE_ENVIRONMENT cuando se llama a ConfigureWebHostDefaults. Las plantillas de aplicaciones web de ASP.NET Core predeterminadas llaman a ConfigureWebHostDefaults. El valor ASPNETCORE_ENVIRONMENT anula DOTNET_ENVIRONMENT. IHostEnvironment.EnvironmentName se puede establecer en cualquier valor, pero el marco proporciona los siguientes valores:
Desarrollo: el archivo launchSettings.json establece ASPNETCORE_ENVIRONMENT en Desarrollo en la máquina local.
Puesta en escena
Producción: el valor predeterminado si no se han establecido DOTNET_ENVIRONMENT y ASPNETCORE_ENVIRONMENT.
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0
TLDR; Establece los valores predeterminados y no cambiantes en el json simple y las anulaciones en el json del entorno, como lo describió.
El JsonConfigurationProvider predeterminado carga la configuración en el siguiente orden:
- appsettings.json
- appsettings.Environment.json: por ejemplo, los archivos appsettings.Production.json y appsettings.Development.json.
La versión del entorno del archivo se carga en función de IHostingEnvironment.EnvironmentName.
Los valores de appsettings.Environment.json anulan las claves en appsettings.json.
No se deben almacenar secretos y contraseñas para entornos de producción en los archivos de configuración.
Considere usar servicios como Key Vault en Azure o configuraciones cifradas de base de datos o cree variables de servidor que anularán los secretos específicos del entorno.