在.Net 4.x中,我有一个Web配置,然后针对每个环境进行了配置转换。
我似乎无法弄清楚如何在.Net Core中运行它,这是我到目前为止所做的...
{
public static void Main(string[] args)
{
BuildWebHost(args).Build().Run();
}
public static IWebHostBuilder BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args)
.UseKestrel((p) => p.AddServerHeader = false)
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config.AddCommandLine(args);
config.AddEnvironmentVariables(prefix: "ENV_");
config.SetBasePath(Directory.GetCurrentDirectory());
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
config.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
})
.UseStartup<Startup>();
}
因此,根据文档(https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-2.2),我现在修改了launchsettings.json以包括每个环境...
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:60913",
"sslPort": 44313
}
},
"$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "Core/App",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Debug"
}
},
"Dev": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Dev",
"ASPNETCORE_DETAILEDERRORS": "true"
},
"applicationUrl": "https://dev.server.url/"
},
"Test": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Test",
"ASPNETCORE_DETAILEDERRORS": "true"
},
"applicationUrl": "https://test.server.url/"
}
}
}
到目前为止一切都很好...
因此,现在,如果我设置发布配置文件并选择要使用的“ Dev”或“ Test”构建配置,我希望可以完全部署,但是在应用程序启动时会指定完全部署的环境。 / p>
这是我感到困惑的地方...
Web.config或项目设置(右键单击项目>属性>调试选项卡>环境变量)都是特定于环境的内容。
所以我为了“动态性”并能够配置东西而进行所有这些工作,现在我有了这个硬编码值,花哨的部署量不会改变。
那我错过了所有这一切吗?
我仍然需要在Web.config文件上使用配置转换来指定这样的环境信息吗...
如果是的话,那么所有这些json的东西又有什么意义呢?我肯定还要继续使用web.config呢?
还有最后一点...
这不是将所有环境的所有配置json文件都部署到所有服务器上吗……肯定是一个坏习惯吗?
开发服务器的安全性要比生产服务器低得多,并且我不希望将生产连接字符串部署到开发服务器。