Вы должны ввести IHostingEnvironment
интерфейс в contractor
контроллер, как это.
public class HomeController : ControllerBase
{
private readonly IHostingEnvironment _hostingEnvironment;
public HomeController(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
}
, затем передать IHostingEnvironment
методу
public IActionResult Index()
{
//test
_config = ConfigurationService.LoadAppSettings(_hostingEnvironment);
return Ok();
}
Обновление
Другой способ - использовать IOptions<>
, в этом случае вы должны зарегистрировать класс, в котором отображается переменная окружения, как этот
public class AppSettings
{
public string Environment { get; set; }
}
регистр класса в методе ConfigureServices
и получите Environment
из CurrentEnvironment.EnvironmentName
public IConfiguration Configuration { get; }
private Microsoft.AspNetCore.Hosting.IHostingEnvironment CurrentEnvironment { get; set; }
public Startup(IConfiguration configuration, IHostingEnvironment env)
{
Configuration = configuration;
CurrentEnvironment = env;
}
public void ConfigureServices(IServiceCollection services)
{
services.Configure<AppSettings>(a => new AppSettings { Environment = CurrentEnvironment.EnvironmentName });
}
, затем в ваш контроллер введите IOption<AppSettings>
вместо IHostingEnvironment
и измените LoadAppSettings(IHostingEnvironment env)
на LoadAppSettings(AppSettings appSettings)
Controller
public class HomeController : ControllerBase
{
private readonly AppSettings _appSettings;
public HomeController(IOptions<AppSettings> options)
{
_appSettings = options.Value;
}
}
Действие
public IActionResult Index()
{
//test
_config = ConfigurationService.LoadAppSettings(_appSettings);
return Ok();
}
и, наконец, измените метод LoadAppSettings
на этот
public IConfigurationRoot LoadAppSettings(AppSettings env)
{
try
{
var config = new ConfigurationBuilder()
.SetBasePath(_basePath)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true) //for azure functions
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables()
.Build();
return config;
}
catch (System.IO.FileNotFoundException)
{
return null;
}