Saltar al contenido

cómo obtener valor de appsettings.json

Si encuentras algo que no comprendes puedes comentarlo y haremos todo lo necesario de ayudarte lo más rápido posible.

Solución:

Así que en realidad hay dos maneras de hacer esto.

Opción 1: Clase de opciones

Tiene un archivo appsettings.json:


  "myConfiguration": 
    "myProperty": true 
  

Creas una Configuración POCO así:

public class MyConfiguration

    public bool MyProperty  get; set; 

En su startup.cs tiene algo en su ConfigureServices que registra la configuración:

public void ConfigureServices(IServiceCollection services)

    services.Configure(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.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 intercambio en caliente y otras cosas con eso.

Opción 2: Configuración POCO

Es casi lo mismo, pero en su método Configure Services, en su lugar, se vincula a un singleton de su POCO.

public void ConfigureServices(IServiceCollection services)

    //services.Configure(Configuration.GetSection("myConfiguration"));
    services.AddSingleton(Configuration.GetSection("myConfiguration").Get());

Y luego puede 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 hacer que las pruebas unitarias sean un poco más fáciles, pero entiende la idea.

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

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 ol Configuration.Manager.AppSettings[“setting”]

Primero cree una clase como “Credencial”:

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

Ahora que está configurado, pongamos 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("Credential:username");
    c.Password = _configuration.GetValue("Credential:password");

Suponiendo que su appsettings.json se vea así:

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

Espero que esto ayude a alguien.

También puede usar la configuración directamente. Sus configuraciones se inyectan para que pueda acceder a ellas con DI…

private readonly IConfiguration _configuration;

public MyClass(IConfiguration configuration)

    _configuration = configuration;

y luego puedes leer tu configuración…

En este caso estoy recuperando una colección…

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

Recuerda que puedes dar visibilidad a este post si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *