Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core web.config中的ASP.NET 5/EF7连接字符串?_Asp.net Core_Entity Framework Core - Fatal编程技术网

Asp.net core web.config中的ASP.NET 5/EF7连接字符串?

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

在ASP.NET4.5中,我可以将我的连接字符串放在
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
数据库上下文。例如,可以使用所有生产配置创建main
appsettings.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”]
,从应用程序配置中读取任何信息。