如何从 .Net 6 中的 class 中的 appsettings.json 中读取值?

How to read values from appsettings.json inside a class in .Net 6?

我想在另一个 class 中访问配置变量的值。

这里是 appsetting.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
"AllowedHosts": "*",
"Configurations": {
   "FirstVerificationValidationDurationMinutes": 2,
   "ResendedVerificationValidationDurationMinutes": 2,
   "JwtRegisterTokenValidationDurationMinutes": 30,
   "JwtLoginTokenValidationDurationMinutes": 30
 }
}

这里我想在下面的 class 中使用 JwtLoginTokenValidationDurationMinutes 的值(在 appsettings.json 中声明,如上图所示):

public async Task<UserCredentialDto> JwtAuthentication(UserCredentialViewModel userCredential)
    {

        var user = await _userService.LoginUser(userCredential);

        if (user is null)
        {
            return new UserCredentialDto
            {
                Status = new StatusMaker().ErrorStatus(user.Status.Message)
            };
        }

        

        //TODO
        var _key = "This is for test";

        var tokenHandler = new JwtSecurityTokenHandler();
        var tokenKey = Encoding.ASCII.GetBytes(_key);


        //var tokenValidationDuration = HERE I NEED THE VALUE //HOW TO ACCESS VALUES FROM appsettings.json?

        var tokenDescriptor = new SecurityTokenDescriptor
        {
            Subject = new ClaimsIdentity(claims),
            Expires = DateTime.UtcNow.AddMinutes(/*tokenValidationDuration*/),
            SigningCredentials = new SigningCredentials(
                new SymmetricSecurityKey(tokenKey),
                SecurityAlgorithms.HmacSha256Signature)
        };

        var token = tokenHandler.CreateToken(tokenDescriptor);


        return new UserCredentialDto
        {
            Token = tokenHandler.WriteToken(token)
        };
    }

}

那么如何访问 appsettings.json 中的值?

我尝试使用 Microsoft.Extensions.Configuration,但它似乎不存在于 .Net 6 中。

var JwtLoginTokenValidationDurationMinutes = builder.Configuration.GetSection("Configurations:JwtLoginTokenValidationDurationMinutes").Value;