对于如何制作生产设置,没有指南(至少对我来说)很清楚。他们只是谈论其中一些是如何工作的,但没有一步一步的指导。我做了以下事情:
尝试使用此Guide
更改项目中的环境变量
尽管Microsoft Doc明确声明要重用ASPNETCORE_ENVIRONMENT
,但我收到此错误。我无法保存这些设置
忽略此问题,您似乎可以在launchSettings.json
中手动创建这些条目,所以我有:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:18549/",
"sslPort": 44319
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/v10Staff",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_ENVIRONMENT_T": "Test"
}
},
"IIS Express (Stage)": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/v10Staff",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Stage"
}
},
"ApplicationName": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "http://localhost:60000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_ENVIRONMENT_T": "Test"
}
}
}
将环境变量添加到服务器
我根据我去Control Panel > System > Advanced system settings.
的文档添加了环境变量并添加了“新用户变量”。 “ASPNETCORE_ENVIRONMENT”,价值“舞台”
使用此Guide
配置件
我的下一个问题是,没有人展示appsettings.Stage.json
的工作“转换”。它是否完全在appsettings文件中使用Stage文件?我是否需要明确说明不同之处?这里说的是我的档案。
appsettings.Stage.json
{
"WebServiceAccount": {
"AccountName": "WebUser",
"AccountPass": "Wedontcarethatthisishere"
},
"ServerLocation": {
"ServerName": "http://appss.domain.com:8080",
"DBConnection": "server=svAppNameSTG;Max Pool Size=6000;database=ES;Integrated Security=SSPI;MultipleActiveResultSets=True"
}
}
appsettings.json
{
"WebServiceAccount": {
"AccountName": "WebUser",
"AccountPass": "testpass1"
},
"ServerLocation": {
"ServerName": "http://appst.domain.com:8080",
"DBConnection": "server=svAppNameTST;Max Pool Size=6000;database=ES;Integrated Security=SSPI;MultipleActiveResultSets=True"
}
}
我知道设置和配置文件已正确设置。因为我们的测试环境有效。当我将它部署到舞台服务器时,我已经确认它仍然指向测试框。
如果有人有导游或者可以发现这有什么问题那就太棒了。
为后代
这是启动构建器
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
答案 0 :(得分:6)
首先,您似乎尝试在第一个屏幕截图中多次使用ASPNETCORE_ENVIRONMENT
变量。您不应该添加新变量,而是更改变量的值以反映您要使用的环境。因此,要在本地测试Stage,只需将ASPNETCORE_ENVIRONMENT
变量的值从Development
修改为Stage
。
我没有遇到ASPNETCORE_ENVIRONMENT_T
变量用于任何事情。如果这是你自己添加的东西,我怀疑它源于对上述内容的误解,并且可能有更好的方法来实现你想要的。必须强调的是launchSettings.json
中的所有内容都适用于您的本地计算机/开发环境。
在舞台或制作服务器上设置ASPNETCORE_ENVIRONMENT
变量将根据您的托管方式而有所不同。 IIS? Azure的? AWS?泊坞窗?以下答案讨论了为IIS设置环境变量:
Publish to IIS, setting Environment Variable
关于appsettings.json
,值将合并。首先从基本文件中读取所有内容,然后从appsettings.{env.EnvironmentName}.json
读取的所有内容都将附加或覆盖基本文件中的内容。在您提供的示例中, WebServiceAccount / AccountName 变量可以从appsettings.Stage.json
中省略,因为它与基础中的值相同。