Buscamos en diferentes foros y así de este modo brindarte la respuesta a tu inquietud, si continúas con preguntas déjanos un comentario y contestaremos porque estamos para ayudarte.
Solución:
de acuerdo con esta publicación
https://github.com/aspnet/Configuration/issues/716
- la
GetSection("Name").Value
regresará nulldebes usarGetChildren
para obtener los elementos secundarios Bind
puede no funcionar contra su objeto, asegúrese de que las propiedades seanpublic
- tratar
Get
over bind, le proporcionará una instancia fuertemente tipada del objeto de configuración()
pruebe un POCO simple de su clase (sin getter/setters complejos, todo público, sin métodos) y luego continúe desde allí
Actualizar:
Desde .net core 2.1 BindNonPublicProperties añadido a BinderOptions
por lo que si se establece en true (el valor predeterminado es false) el enlazador intentará establecer todas las propiedades que no sean de solo lectura.
var yourPoco = new PocoClass();
Configuration.GetSection("SectionName").Bind(yourPoco, c => c.BindNonPublicProperties = true)
Si utiliza GetSections()
junto con Bind()
debería poder crear objetos poco para su uso.
var poco= new PocoClass();
Configuration.GetSection("SmsSettings").Bind(poco);
Esto debería devolverle un objeto poco con todos los valores establecidos.
Entiendo que la respuesta ha sido aceptada. Sin embargo, proporcionando un código de ejemplo adecuado, en caso de que alguien quiera entender un poco más…
Es bastante sencillo enlazar una configuración de tipo fuerte personalizada. es decir. la configuración json se ve a continuación
"AppSettings":
"v": true,
"SmsSettings":
"FromPhone": "9145670987",
"StartMessagePart": "Dear user, You have requested info from us on starting",
"EndMessagePart": "Thank you."
,
"Auth2Keys":
"Google":
"ClientId": "",
"ClientSecret": ""
,
"Microsoft":
"ClientId": "",
"ClientSecret": ""
,
"JWT":
"SecretKey": "",
"Issuer": ""
y sus clases de C# se ven como
public class SmsSettings
public string FromPhone get; set;
public string StartMessagePart get; set;
public string EndMessagePart get; set;
public class ClientSecretKeys
public string ClientId get; set;
public string ClientSecret get; set;
public class JWTKeys
public string SecretKey get; set;
public string Issuer get; set;
public class Auth2Keys
public ClientSecretKeys Google get; set;
public ClientSecretKeys Microsoft get; set;
public JWTKeys JWT get; set;
Puede obtener la sección por GetSection("sectionNameWithPath")
y luego Convertir a tipo fuerte llamando Get
;
var smsSettings = Configuration.GetSection("AppSettings:SmsSettings").Get();
var auth2Keys= Configuration.GetSection("AppSettings:Auth2Keys").Get();
por simple string valores
var isDebugMode = Configuration.GetValue(“AppSettings:IsDebugMode”);
Espero que esto ayude…
Aquí puedes ver las reseñas y valoraciones de los lectores
Te invitamos a favorecer nuestro estudio poniendo un comentario y dejando una valoración te lo agradecemos.