Estoy recibiendo un error:
Error CS1503 Argumento 2: no se puede convertir de 'Microsoft.Extensions.Configuration.IConfigurationSection' a 'System.Action<>
Cuando estoy usando Configure with Bind(), está funcionando.
var bandConfig = new BandSettings(); Configuration.GetSection("BandSettings").Bind(bandConfig );Pero con el siguiente código, recibo el error anterior.
Probé muchas soluciones sugeridas en blogs y otros foros, por ejemplo: obtener valor de appsettings.json en .net core
pero sigue siendo el mismo error. ¿Me estoy perdiendo algo?
Tengo las siguientes cosas en su lugar: appsettings.json
"BandSettings":{ "UserID": "aTestUserID", "Password" : "aTestPassword" }BandSettings.cs
public class BandWidthSettings { public string UserID { get; set; } public string ApiToken { get; set; } }TestHelper.cs
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; public static IConfiguration GetTestConfiguration() => new ConfigurationBuilder() .AddJsonFile("appsettings.json") .Build(); public IConfiguration Configuration { get; } public TestHelper(IConfiguration configuration) { Configuration = configuration; } public void ConfigureServices(IServiceCollection services) { var config = new BandSettings(); var bandSettingsSection = Configuration.GetSection("BandSettings"); services.Configure<BandSettings>(bandSettingsSection); //Error is getting on this line - bandSettingsSection }Agregue el paquete NuGet Microsoft.Extensions.Options.ConfigurationExtensions para obtener el método de extensión donde
services.Configure<BandSettings>(Configuration.GetSection("BandSettings"));trabajará.
Referencia: https://github.com/dotnet/AspNetCore.Docs/issues/18833
Crear un POCO para la configuración
public class MySetting { public string Setting{ get; set; } }En el inicio funciona perfectamente como debería ser:
services.Configure<MySetting>(Configuration.GetSection("MySetting"));Sin embargo, en mi inyección de dependencia, agregue el enlace como se menciona en los comentarios de la pregunta.
private static void ConfigureServices(IServiceCollection services) { var mySection = configuration.GetSection("MySetting"); services.Configure<MySetting>(c => mySection .Bind(c)); } public IConfiguration Configuration { get; } public TestHelper(IConfiguration configuration) { Configuration = configuration; } public void ConfigureServices(IServiceCollection services) { //Configure section binding services.Configure<BandSettings>(Configuration.GetSection(BandSettings.SECTION)); }