Как изолировать строки подключения в отдельном файле в ядре asp.net? - PullRequest
0 голосов
/ 29 августа 2018

Я новичок в ядре asp.net и мне интересно, как поместить строки соединения в отдельный файл (файл json) и игнорировать его, чтобы каждый разработчик мог изменить его, добавив свои локальные строки соединения?

В Asp.net я обычно помещал connectionStrings в отдельный файл (например, connectionStrings.config) и игнорировал его в git. Затем внутри web.config добавьте следующую конфигурацию:

  <connectionStrings configSource="connectionStrings.config" />

Не могли бы вы, пожалуйста, подсказать мне, как я могу добиться этого с помощью ядра asp.net?

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

С .NET Core или ASP.NET Core мы больше не используем для этой цели web.configs или app.configs. Существует новая система конфигурации , созданная Microsoft. По умолчанию веб-хост создает конфигурацию, которая включает их в указанном порядке

  1. appsettings.json, необязательно
  2. appsettings. {Environment} .json, необязательно
  3. переменные окружения

В вашем случае вы захотите создать его вручную.

Для этого вам нужно иметь ссылку на (включено по умолчанию для шаблонов Visual Studio через метапакет)

  1. Microsoft.Extensions.Configuration
  2. Microsoft.Extensions.Configuration.Json
  3. Microsoft.Extensions.Configuration.EnvironmentVariables

Теперь вместо использования конфигурации по умолчанию создайте свою собственную в своем классе запуска.

public class Startup 
{
  // environment is being injected by the webhost
  public Startup(IHostingEnvironment environment)
  {
     var configuration = new ConfigurationBuilder()
                             .AddJsonFile(Path.Combine(AppContext.BaseDirectory, "appsettings.json"), optional: false) // u can change that if you want to be optional
                             .AddJsonFile(Path.Combine(AppContext.BaseDirectory, $"appsettings.{environment.environmentName}.json), optional: false)"
                             .AddJsonFile(Path.Combine(AppContext.BaseDirectory, "connectionsettings.json"), optional: false)
                             .Build();
  }
}

Тогда вы можете пойти дальше и получить к ним доступ, как раньше

configuration.GetConnectionString("MyConnectionString");

и ваш файл json должен выглядеть так

"ConnectionStrings": {
   "MyConnectionString": "some-connectionstring-value"
}
0 голосов
/ 29 августа 2018

используйте ConfigureAppConfiguration в вашем Program классе

WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureAppConfiguration(builder =>
{
    builder.AddJsonFile("appsetting.json");
    builder.AddXmlFile("connectionStrings.config"));
});
...