如何在asp.net核心的隔离文件中隔离connectionStrings?

时间:2018-08-29 08:46:10

标签: asp.net-core configuration .net-core

我是asp.net核心的新手,我想知道如何将connectionStrings放在单独的文件(json文件)中并忽略它,以便每个开发人员都可以对其进行修改以添加他的本地connectionStrings?

在Asp.net中,我曾经将connectionStrings放在单独的文件中(例如connectionStrings.config),并在git上忽略了它。然后在 web.config 内部添加以下配置:

  <connectionStrings configSource="connectionStrings.config" />

那么您能指导我如何使用asp.net核心实现这一目标吗?

3 个答案:

答案 0 :(得分:1)

在您的ConfigureAppConfiguration类中使用Program

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

答案 1 :(得分:0)

使用.NET Core或ASP.NET Core,我们不再为此目的使用web.configs或app.configs。由Microsoft构建了一个新的configuration-system。默认情况下,网络托管服务商会构建一个包含该顺序的配置

  1. appsettings.json,可选
  2. appsettings。{environment} .json,可选
  3. 环境变量

根据您的情况,您将希望手动构建一个。

为此,您需要参考(默认情况下通过meta包包含在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"
}

答案 2 :(得分:0)

您还可以使用.NET用户机密,请参阅: https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-3.1&tabs=windows

这些具有巨大的好处:

  • 秘密文件位于git文件夹之外,因此永远不会错误提交。
  • 您可以从Visual Studio中编辑机密文件,其外观类似于appsettings.json

基本上,秘密配置仅对开发有效(这是默认设置),对于生产,您将具有其他配置源(密钥库或环境变量等)