Azure 我是否可以使用不同的appsettings.xxx.json文件和调试配置文件设置多个开发环境?
我已经阅读了一些关于设置ASP.Net核心应用程序部署环境的文档。这些文章通常都是关于发展的。按名称进行登台和生产,但决不偏离这些传统的环境名称 通常,一旦退出“开发”,就要关闭开发/调试设置,以便在应用程序崩溃时不会将敏感信息泄漏到web上。这是有道理的 但是,我的应用程序正处于开发的早期阶段,我需要两种可以调试的开发环境配置。具体来说,我的团队主要希望在本地开发,连接到本地SQL Server数据库。但是,我们需要设置和测试Azure数据库,对于初步设置,如果我们可以在本地运行服务器开发模式,并且能够从开发箱连接到Azure数据库,这将有所帮助 我想做的是创建两个名为Azure 我是否可以使用不同的appsettings.xxx.json文件和调试配置文件设置多个开发环境?,azure,asp.net-core,asp.net-core-configuration,Azure,Asp.net Core,Asp.net Core Configuration,我已经阅读了一些关于设置ASP.Net核心应用程序部署环境的文档。这些文章通常都是关于发展的。按名称进行登台和生产,但决不偏离这些传统的环境名称 通常,一旦退出“开发”,就要关闭开发/调试设置,以便在应用程序崩溃时不会将敏感信息泄漏到web上。这是有道理的 但是,我的应用程序正处于开发的早期阶段,我需要两种可以调试的开发环境配置。具体来说,我的团队主要希望在本地开发,连接到本地SQL Server数据库。但是,我们需要设置和测试Azure数据库,对于初步设置,如果我们可以在本地运行服务器开发模式
aspsettings.Development.json
和aspsettings.LocalDevelopment.json
的配置文件,这两个文件都位于解决方案中的两个ASP.Net核心项目中——一个用于Web API,另一个用于UI项目
Development
将包含连接到适当的dev数据库服务器(用于开发测试的Azure数据库需要访问Azure)的所有值,LocalDevelopment
环境将用于连接到本地数据库
我已将这些文件添加到我的项目中,将开发
详细信息复制到本地开发
,并仅更改了API项目配置的连接字符串
接下来,我打开了我的项目属性并添加了两个用于调试的概要文件。为了解决这个问题,我为API项目和UI项目创建了这些相同的概要文件。这些配置文件分别命名为“IIS本地”和另一个“IIS开发服务器”。最后,在每个新概要文件的每个项目页面中,我为ASPNETCORE\u环境
-Development
和LocalDevelopment
输入了各自的值
当我以开发的方式调试应用程序时,它运行良好。但是,当我使用
LocalDevelopment`环境和概要文件运行应用程序时,会出现以下错误:
错误。处理您的请求时出错。请求ID:0HLLE04D5NFDU:0000000 1
切换到开发环境的开发模式将显示更多
有关发生的错误的详细信息
不应在部署中启用开发环境
应用程序,因为它可能会从
向最终用户显示的异常。对于本地调试,
可以通过设置
ASPNETCORE_环境变量用于开发,以及
重新启动应用程序
这似乎不起作用,因为两个配置对于各自的项目都是相同的,唯一的区别是API中的连接字符串,我添加了一个EnvironmentName
属性进行标识
我可能做错了什么
以下是LocalDevelopment
文件的内容。以防万一我遗漏了什么
API中的设置
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"EnvironmentName": "LOCAL",
"ConnectionStrings": {
"Database": "xxx"
}
}
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}
用户界面中的设置
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"EnvironmentName": "LOCAL",
"ConnectionStrings": {
"Database": "xxx"
}
}
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}
在Startup.cs中,您的
Configure
方法中可能有如下内容:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/error/500");
}
您需要将条件更改为类似以下内容:
if (env.IsDevelopment() || env.IsEnvironment("LocalDevelopment"))
或者,您可以使用开发错误页面简单地创建任何非生产环境:
if (!env.IsProduction())
像
IsDevelopment
,IsProduction
等方法只是语法上的糖分,所以你不必做IsEnvironment(“开发”)
。然而,由于LocalDevelopment
是您自己创建的,因此显然没有内置的方法。啊,就是这样。这是我必须处理的第一个ASP.Net核心项目,也是我可能在近10年内处理的第一个“全新”项目。(需要进行大量维护和升级!)这些类型的配置/环境对我来说是一个新领域。谢谢你的帮助。