c# - 当我将 ASP.NET Core Web 应用程序部署到 Azure 时,为什么没有检测到我的环境设置?
问题描述
我正在尝试在我的 Web 应用程序中定义一些环境变量。我在 Azure 上托管我的站点,该站点具有站点首先进入的暂存部署槽,然后,如果更改已签署,则将其发布到生产环境。
这两个地方的网址是:
生产
"BaseUrl": "https://mycompany.azurewebsites.net"
分期
"BaseUrl": "https://mycompany-staging2n1h.azurewebsites.net"
我希望appsettings.Staging.json
在站点到达暂存区域时使用我的文件,然后一旦将其发布到生产环境中,我希望它使用appsettings.json
.
据我了解,如果您未
appsettings.Production.json
在应用程序中定义生产文件,则默认为appsettings.json
.
因此,我appsettings.Staging.json
在我的应用程序中创建了一个文件,其中包含与生产环境不同的连接字符串。
应用设置.json
{
"AzureAd": {
"CallbackPath": "/signin-oidc",
"BaseUrl": "https://mycompany.azurewebsites.net"
},
"ConnectionStrings": {
"MyCompanyConnection": "production connection string"
},
"AllowedHosts": "*"
}
appsettings.Staging.json
{
"AzureAd": {
"CallbackPath": "/signin-oidc",
"BaseUrl": "https://mycompany-staging2n1h.azurewebsites.net"
},
"ConnectionStrings": {
"MyCompanyConnection": "staging connection string"
},
"AllowedHosts": "*"
}
然后我进入launchSettings.json
文件进行如下设置:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:xxxx",
"sslPort": xxxx
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"MyCompany": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
},
"MyCompany Staging": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Staging"
}
}
}
}
当我将我的应用程序部署到 Azure 并到达暂存区域时,它正在查看错误的连接字符串,这意味着它没有使用正确的 appsettings 文件。我是否错过了一个步骤或设置不正确?
解决方案
您需要ASPNETCORE_ENVIRONMENT
在 Azure 上设置 - 对于应用服务,它位于配置部分:
(部署应用时更改launchSettings.json
无效,仅由 Visual Studio 使用)
正如文档所说:
为了确定运行时环境,ASP.NET Core 从以下环境变量中读取:
DOTNET_ENVIRONMENT
ASPNETCORE_ENVIRONMENT
当调用 ConfigureWebHostDefaults 时。默认的 ASP.NET Core Web 应用模板调用 ConfigureWebHostDefaults。值ASPNETCORE_ENVIRONMENT
覆盖DOTNET_ENVIRONMENT
框架提供以下值:
- Development :launchSettings.json 文件
ASPNETCORE_ENVIRONMENT
在本地机器上设置为 Development。 - 分期
- 生产 : 如果 未设置
DOTNET_ENVIRONMENT
,则为默认值。ASPNETCORE_ENVIRONMENT
推荐阅读
- version-control - 哪些版本控制系统适用于 Launchable?
- discord.js - 有人可以帮助我处理 discord.js 表情吗?
- python - 使用 NumPy 和 matplotlib 绘制的图表上未显示某些点
- c++ - 线程终止后会发生什么
- c# - .stl 文件下载未打开或损坏
- javascript - 如何处理“你确定吗?” Electron 中的弹出窗口
- regex - 正则表达式过度拆分,如何限制拆分字符
- mysql - 根据上一列添加另一个不同的列
- python - 从另一个类 kivy 的 TextInput 获取数据
- sql - Spark SQL 爆炸引用