Ответ 1
Выполняйте загрузку Конфигураций в Startup.cs. Если они вам понадобятся в другом месте, вы можете загрузить значения в соответствующие POCOs и зарегистрировать их в DI, чтобы вы могли вводить их там, где они вам нужны. Это позволяет организовать вашу конфигурацию в разных файлах и в разных POCO таким образом, чтобы это имело смысл для вашего приложения. Это уже встроено в поддержку этого в инъекции зависимостей. Вот как вы это сделаете:
A POCO, чтобы включить вашу конфигурацию:
public class SomeOptions
{
public string EndpointUrl { get; set; }
}
Ваш Startup.cs загружает конфигурацию в POCO и регистрирует ее в DI.
public class Startup
{
public Startup()
{
Configuration = new Configuration()
.AddJsonFile("Config.json")
.AddEnvironmentVariables();
}
public IConfiguration Configuration { get; set; }
public void Configure(IApplicationBuilder app)
{
app.UseMvc();
}
public void ConfigureServices(IServiceCollection services)
{
services.Configure<SomeOptions>(options =>
options.EndpointUrl = Configuration.Get("EndpointUrl"));
services.AddMvc();
}
}
Затем в вашем контроллере получите конфигурацию POCO, которую вы создали в Startup.cs через инъекцию зависимостей следующим образом:
public class SomeController
{
private string _endpointUrl;
public SomeController(IOptions<SomeOptions> options)
{
_endpointUrl = options.Options.EndpointUrl;
}
}
Протестировано с 1.0.0-beta1 сборками aspnet5.
Подробнее см. Основы настройки ASP.Net 5.