usar net leer example configurationsettings como app .net appsettings

.net - net - cómo obtener valor de appsettings.json



leer appsettings vb net (3)

Así que realmente hay dos maneras de hacer esto.

Opción 1: Clase de opciones

Tienes un archivo appsettings.json:

{ "myConfiguration": { "myProperty": true } }

Usted crea un POCO de configuración así:

public class MyConfiguration { public bool MyProperty { get; set; } }

En su startup.cs tiene algo en sus servicios de configuración que registra la configuración:

public void ConfigureServices(IServiceCollection services) { services.Configure<MyConfiguration>(Configuration.GetSection("myConfiguration")); }

Luego, en su controlador / servicio, inyecta las IOptions y es utilizable.

public class ValuesController : Controller { private readonly MyConfiguration _myConfiguration; public ValuesController(IOptions<MyConfiguration> myConfiguration) { _myConfiguration = myConfiguration.Value; } }

Personalmente no me gusta usar IOptions porque creo que arrastra algo de basura adicional que realmente no quiero, pero puedes hacer cosas geniales como el intercambio en caliente y cosas con eso.

Opción 2: Configuración POCO

En su mayoría es lo mismo, pero en su método de configuración de servicios, en su lugar, se une a un singleton de su POCO.

public void ConfigureServices(IServiceCollection services) { //services.Configure<MyConfiguration>(Configuration.GetSection("myConfiguration")); services.AddSingleton(Configuration.GetSection("myConfiguration").Get<MyConfiguration>()); }

Y luego puedes inyectar el POCO directamente:

public class ValuesController : Controller { private readonly MyConfiguration _myConfiguration; public ValuesController(MyConfiguration myConfiguration) { _myConfiguration = myConfiguration; } }

Un poco simplista porque probablemente debería usar una interfaz para facilitar un poco las pruebas unitarias, pero se entiende la idea.

Principalmente tomado desde aquí: http://dotnetcoretutorials.com/2016/12/26/custom-configuration-sections-asp-net-core/

public class Bar { public static readonly string Foo = ConfigurationManager.AppSettings["Foo"]; }

En .NET Framework 4.x, puedo usar ConfigurationManager.AppSettings ["Foo"] para obtener Foo en Webconfig , y luego puedo obtener fácilmente el valor de Foo través de Bar.Foo

Pero en .Net Core, debo inyectar options , y no puedo obtener el valor de Foo través de Bar.Foo

¿Existe un método que pueda ser directamente a través de Bar.Foo para obtener el valor de Foo ?


Las soluciones en la parte superior requieren mucho tiempo y no son sencillas, esta es la mejor manera efectiva de hacerlo, no se necesita configuración en el inicio ni nada. Es como usar el buen Configuration.Manager.AppSettings [configuración "]

Primero crea una clase como "Credencial":

public class Credential { public string Username {get;set} public string Password {get;set;} }

Ahora que está configurado, deje la IConfiguration en su constructor así:

private IConfiguration _configuration; public ValuesController(IConfiguration iconfig) { _configuration = iconfig; }

Entonces estás listo para llamarlo!

Credential c = new Credential(); c.UserName = _configuration.GetValue<string>("Credential:username"); c.Password = _configuration.GetValue<string>("Credential:password");

Suponiendo que su appsettings.json se ve así:

"Credential": { "username": "myuser", "password": "mypassword" }

Espero que esto ayude a alguien.


También puede utilizar la configuración directamente. Sus ajustes se inyectan para que pueda llegar a ellos con DI ...

private readonly IConfiguration _configuration; public MyClass(IConfiguration configuration) { _configuration = configuration; }

y luego puedes leer tus configuraciones ...

En este caso estoy recuperando una colección ...

var myList = _configuration.GetSection("MyList").Get<List<string>>();