我是asp.net核心的新手,我想知道如何将connectionStrings放在单独的文件(json文件)中并忽略它,以便每个开发人员都可以对其进行修改以添加他的本地connectionStrings?
在Asp.net中,我曾经将connectionStrings放在单独的文件中(例如connectionStrings.config),并在git上忽略了它。然后在 web.config 内部添加以下配置:
<connectionStrings configSource="connectionStrings.config" />
那么您能指导我如何使用asp.net核心实现这一目标吗?
答案 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。默认情况下,网络托管服务商会构建一个包含该顺序的配置
根据您的情况,您将希望手动构建一个。
为此,您需要参考(默认情况下通过meta包包含在Visual Studio模板中)
现在,不要使用默认配置,而是在启动类中构建自己的计算机。
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
这些具有巨大的好处:
基本上,秘密配置仅对开发有效(这是默认设置),对于生产,您将具有其他配置源(密钥库或环境变量等)