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ó.