1

Мы используем webApi для одного из наших новейших продуктов, который размещен на IIS7.5 и написан на ASP.NET5 (.Net Core).IIS Change WebApi ConnectionString

В более ранних веб-приложениях можно было изменить строку соединения в web.config в Windows Explorer, а веб-сайт, запущенный на IIS, использовал ConnectionString в файле web.config.

Возможно ли это для современных WebAPI (у меня есть ConnectionString insite appsettings.json)? Я не нашел решения для этого в IIS или File-Explorer, а использование переменных среды не соответствует нашим потребностям.

Нам нужно переключиться между несколькими DB-экземплярами, поэтому очень легкое решение на основе файлов было бы очень желанным.

PS: Мы используем EntityFrameworkCore (aka EF7) Database-First, поскольку это новый инструмент, который находится поверх нашей текущей базы данных.

ответ

0

Вы можете использовать один из источников конфигурации (включая JSON, доступ к которому можно получить по адресу AddJsonFile() в пакете Microsoft.Extensions.Configuration.Json), чтобы прочитать файл настроек, а затем использовать значения, считываемые оттуда для настройки EF.

Пример кода может выглядеть следующим образом:

public Startup(IHostingEnvironment env) 
{ 
    var builder = new ConfigurationBuilder() 
     .SetBasePath(env.ContentRootPath) 
     .AddJsonFile("appsettings.json"); 

    Configuration = builder.Build(); 
} 

public IConfigurationRoot Configuration { get; } 

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddDbContext<MyDbContext>(options => 
     options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); 
} 

Для получения дополнительной информации см Configuration in ASP.NET Core docs или this answer.

+0

Благодарим вас! Конфигурация 'options.UseSqlServer (Конфигурация [" Data: DefaultConnection: ConnectionString "])' сделала трюк. Мне просто нужно перезапустить IIS-приложение (или пул) после изменения ConnectionString, но это будет более чем нормально для нашей тестовой среды, поскольку мы не часто меняем это :-) – nicn