standard net asp app c# .net-core app-config .net-standard

c# - asp - system configuration configurationmanager.net standard



¿ConfigurationManager.AppSettings está disponible en.NET Core 2.0? (5)

Tengo un método que lee la configuración de mi archivo de configuración de esta manera:

var value = ConfigurationManager.AppSettings[key];

Se compila bien solo cuando se dirige a .NET Standard 2.0.

Ahora necesito múltiples objetivos, así que actualicé mi archivo de proyecto con:

<TargetFrameworks>netcoreapp2.0;net461;netstandard2.0</TargetFrameworks>

Pero ahora, la compilación falla para netcoreapp2.0 con el siguiente mensaje de error:

Error CS0103 The name ''ConfigurationManager'' does not exist in the current context (netcoreapp2.0)

Por separado, creé una nueva aplicación de consola .NET Core 2.0 (solo dirigida a .NET Core 2.0 esta vez), pero del mismo modo parece que no hay ConfigurationManager bajo el espacio de nombres System.Configuration .

Estoy bastante confundido porque está disponible en .NET Standard 2.0, por lo que esperaría que esté disponible en .NET Core 2.0, ya que .NET Core 2.0 es compatible con .NET Standard 2.0.

¿Qué me estoy perdiendo?


El último conjunto de orientación es el siguiente: (de https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library#environment-variables )

Utilizar:

System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);

De los documentos:

public static class EnvironmentVariablesExample { [FunctionName("GetEnvironmentVariables")] public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log) { log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}"); log.LogInformation(GetEnvironmentVariable("AzureWebJobsStorage")); log.LogInformation(GetEnvironmentVariable("WEBSITE_SITE_NAME")); } public static string GetEnvironmentVariable(string name) { return name + ": " + System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process); } }

La configuración de la aplicación se puede leer desde variables de entorno tanto cuando se desarrolla localmente como cuando se ejecuta en Azure. Cuando se desarrolla localmente, la configuración de la aplicación proviene de la colección Values en el archivo local.settings.json . En ambos entornos, local y Azure, GetEnvironmentVariable("<app setting name>") recupera el valor de la configuración de la aplicación con nombre. Por ejemplo, cuando se ejecuta localmente, se devolverá "Mi nombre de sitio" si su archivo local.settings.json contiene { "Values": { "WEBSITE_SITE_NAME": "My Site Name" } } .

La propiedad System.Configuration.ConfigurationManager.AppSettings es una API alternativa para obtener valores de configuración de la aplicación, pero le recomendamos que use GetEnvironmentVariable como se muestra aquí.


Instalé System.Configuration.ConfigurationManager de Nuget en mi aplicación .net core 2.2.

Luego hago referencia using System.Configuration;

Luego cambié

WebConfigurationManager.AppSettings to .. ConfigurationManager.AppSettings

Hasta ahora creo que esto es correcto. 4.5.0 is typical with .net core 2.2


Puede usar la Configuración para resolver esto.

Ej (Startup.cs):

Puede pasar por DI a los controladores después de esta implementación.

public class Startup { public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); Configuration = builder.Build(); } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var microserviceName = Configuration["microserviceName"]; services.AddSingleton(Configuration); ... }


Sí, ConfigurationManager.AppSettings está disponible en .NET Core 2.0 después de hacer referencia al paquete NuGet System.Configuration.ConfigurationManager .

Los créditos van a @JeroenMostert por darme la solución.


Una vez que haya configurado los paquetes, deberá crear una app.config o web.config y agregar algo como lo siguiente:

<configuration> <appSettings> <add key="key" value="value"/> </appSettings> </configuration>