Доступ к конфигурации в контроллере работает немного иначе, чем в Startup.cs.Я сделал это некоторое время назад, просто следуйте этим шагам:
Поместите всю конфигурацию, к которой вы хотите получить доступ в вашем контроллере, в один раздел, например "EmailSettings":
appsettings.json
{
"EmailSettings": {
"EmailTemplatesPath": "EmailTemplates",
"Email": "aa@aa.com"
}
}
Затем создайте в своем проекте веб-API класс с именем EmailSettings.cs
:
EmailSettings.cs
public class EmailSettings
{
public string EmailTemplatesPath { get; set; }
public string Email { get; set; }
}
Затем привяжите свои значения Config к экземпляру класса EmailSettings
в Startup.cs
и добавьте этот объект в контейнер внедрения зависимостей:
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
...
EmailSettings emailSettings = new EmailSettings();
Configuration.GetSection("EmailSettings").Bind(emailSettings);
services.AddSingleton(emailSettings);
}
Теперь вы можете запросить свою конфигурацию в контроллере Api, просто добавив ее в конструктор следующим образом:
Контроллер веб-API
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
EmailSettings _emailSettings;
public ValuesController(EmailSettings emailSettings)
{
_emailSettings = emailSettings;
}
....
}
Просто повторите попыткув моем текущем проекте (.NET Core 2.2 Web Api), и он работал.Я поместил точку останова в конструктор ValuesController, и объект _emailSettings содержал значения из файла appsettings.json
.Вы должны быть в состоянии просто скопировать и вставить это!Повеселись!:)