Asp.net core web.config中的ASP.NET 5/EF7连接字符串?
在ASP.NET4.5中,我可以将我的连接字符串放在Asp.net core web.config中的ASP.NET 5/EF7连接字符串?,asp.net-core,entity-framework-core,Asp.net Core,Entity Framework Core,在ASP.NET4.5中,我可以将我的连接字符串放在web.config中,以利用web.config转换,这样我就可以在本地使用开发数据库,然后在发布时它将指向生产数据库。我现在正在使用ASP.Net 5和EF 7,它似乎使用config.json文件来存储连接字符串,而不是web.config。使用这种新的文件存储方式,我不知道如何执行类似于过去的web.config转换的操作。我如何设置config.json来执行此操作,或者如何配置它,以便我可以在web.config中执行此操作,并让E
web.config
中,以利用web.config转换
,这样我就可以在本地使用开发数据库,然后在发布时它将指向生产数据库。我现在正在使用ASP.Net 5和EF 7,它似乎使用config.json
文件来存储连接字符串,而不是web.config
。使用这种新的文件存储方式,我不知道如何执行类似于过去的web.config转换的操作。我如何设置config.json
来执行此操作,或者如何配置它,以便我可以在web.config中执行此操作,并让EF在那里查找字符串?您可以这样做,从不同的*.json文件中提取配置,以下基于环境或环境变量
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
.AddEnvironmentVariables();
您也可以使用ASPNET机密管理器
每次访问配置时,它都会覆盖其所有配置值的设置,这意味着该变量将反映其上次设置的内容
查看。转换语法面向XML格式的数据。新的配置包括一些JSON格式的文件,可以很容易地实现登台场景
首先,ASP.NET支持允许通过使用ASPNET_ENV
环境变量或通过在launchSettings.json
文件中设置Hosting:environment
来设置目标环境(请参见项目的Properties
文件夹)。可以在Visual Studio中的项目属性中修改文件launchSettings.json
。首先应该选择“个人资料”
并为每个配置文件进行设置。或者,只需手动编辑文件Properties\launchSettings.json
一些配置文件,如hosting.json
会使用staging自动工作。因此,例如,您可以通过在hosting.json
和hosting.Development.json
中指定server.url
来设置不同的端口和不同的接口绑定
要在appsettings.json
中包含暂存逻辑,需要在Startup.cs
中修改Startup
类的构造函数。例如:
公共类启动
{
公共静态IConfigurationRoot配置{get;set;}
公共启动(IHostingEnvironment环境)
{
//设置配置源。
var builder=new ConfigurationBuilder()
.AddJsonFile(“appsettings.json”)
.AddJsonFile($“appsettings.{env.EnvironmentName}.json”,true)
.AddenEnvironmentVariables();
Configuration=builder.Build();
}
public void配置服务(IServiceCollection服务)
{
//添加框架服务。
services.AddMvc()
.AddJsonOptions(选项=>{
options.SerializerSettings.ContractResolver=
新CamelCasePropertyNamesContractResolver();
});
services.AddEntityFramework()
.AddSqlServer()文件
.AddDbContext(选项=>{
使用SQLServer(配置[“数据:连接字符串]);
})
.AddDbContext(选项=>{
使用SQLServer(配置[“数据:SM9ConnectionString]”);
});
}
}
上述代码将配置保存在configuration
属性中,然后使用ConfigureServices
注入MyContext
和SM9Context
数据库上下文。例如,可以使用所有生产配置创建mainappsettings.json
文件,并创建只覆盖一个(从两个数据:ConnectionString
和数据:SM9ConnectionString
)连接字符串的appsettings.Development.json
文件:
{
“数据”:{
“ConnectionString”:“服务器=…”
}
}
ASP.NET将组合两个文件appsettings.json
和可选的appsettings.Development.json
,以创建完整的配置参数集
和文档说明了如何在ASP.NET 5中使用登台。您如何从应用程序中的其他位置(例如控制器或过滤器)访问公共配置
属性?我宁愿将它设置为私有的,并通过DI容器提供给任何需要它的东西:services.AddSingleton(Configuration)
@ProfK:上面的代码使用static
和set
属性(可以是private set;
)对于配置
:公共静态IConfigurationRoot配置{get;private set;}
。因此,可以在代码的每个部分使用Startup.Configuration[“Data:ConnectionString”]
,从应用程序配置中读取任何信息。