Compartilhamento de tecnologia

O núcleo .Net implementa a leitura de arquivos de configuração personalizados

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

A leitura de arquivos de configuração personalizados é uma necessidade comum no .NET Core, especialmente quando o padrãoappsettings.jsonappsettings.Development.jsonouappsettings.Production.json Quando o arquivo de configuração não é suficiente para atender às necessidades da sua aplicação. Aqui estão as etapas sobre como implementar a leitura de um arquivo de configuração personalizado:

1. Crie um arquivo de configuração personalizado

Primeiro, crie um arquivo de configuração personalizado no diretório raiz do seu projeto ou onde achar necessário, por exemplo.mycustomsettings.json

2. Defina a classe de configuração

Em seguida, você precisa definir uma classe que corresponda à estrutura do seu arquivo de configuração personalizado.hipótesemycustomsettings.jsonO conteúdo é o seguinte:

  1. {
  2. "MyCustomSettings": {
  3. "Key1": "Value1",
  4. "Key2": "Value2"
  5. }
  6. }

Você pode definir uma classe de configuração como esta:

  1. public class MyCustomSettings
  2. {
  3. public string Key1 { get; set; }
  4. public string Key2 { get; set; }
  5. }
  6. public class MyCustomSettingsOptions
  7. {
  8. public MyCustomSettings MyCustomSettings { get; set; }
  9. }

3. emStartup.csConfigurar e ler a configuração

existir.NET CoreAplicadoStartup.csarquivo, você precisaConfigureServicesMétodo para adicionar suporte para arquivos de configuração personalizados e adicioná-los ao contêiner de injeção de dependência.

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. // 添加对自定义配置文件的支持
  4. var builder = new ConfigurationBuilder()
  5. .SetBasePath(Directory.GetCurrentDirectory())
  6. .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
  7. .AddJsonFile("mycustomsettings.json", optional: true, reloadOnChange: true); // 添加自定义配置文件
  8. IConfigurationRoot configuration = builder.Build();
  9. // 绑定配置到MyCustomSettingsOptions类
  10. services.Configure<MyCustomSettingsOptions>(configuration.GetSection("MyCustomSettings"));
  11. // 其他服务配置...
  12. services.AddControllers();
  13. // 其他配置...
  14. }

4. Injetar e usar configuração no controlador ou outras classes

Agora você pode usá-lo em seu controlador ou outros serviços via injeção de dependênciaMyCustomSettingsOptions.

  1. [ApiController]
  2. [Route("[controller]")]
  3. public class MyController : ControllerBase
  4. {
  5. private readonly MyCustomSettings _myCustomSettings;
  6. public MyController(IOptions<MyCustomSettingsOptions> options)
  7. {
  8. _myCustomSettings = options.Value.MyCustomSettings;
  9. }
  10. [HttpGet]
  11. public IActionResult Get()
  12. {
  13. // 使用_myCustomSettings...
  14. return Ok($"Key1: {_myCustomSettings.Key1}, Key2: {_myCustomSettings.Key2}");
  15. }
  16. }

Ao definir uma classe que corresponda à estrutura do arquivo de configuração e entãoStartup.csConfigure e leia essas configurações e, finalmente, use-as em outras partes da aplicação por meio de injeção de dependência.