Saltar al contenido

Configuration.GetSection en Asp.Net Core 2.0 obteniendo todas las configuraciones

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

  1. la GetSection("Name").Value regresará nulldebes usar GetChildren para obtener los elementos secundarios
  2. Bind puede no funcionar contra su objeto, asegúrese de que las propiedades sean public
  3. 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 BinderOptionspor 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.

¡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 *