下面是我用来从appsettings.json文件中读取 AppName 的代码片段。Startup.cs → ConfigureServices()services.Configure<CustomConfig>(Configuration.GetSection("CustomConfig"));services.AddSingleton(resolver => resolver.GetRequiredService<IOptions<CustomConfig>>().Value);自定义配置文件public class CustomConfig{ public string AppName { get; set; }}但我的要求是,AppName会根据不同的客户而变化,但同时不应该在appsettings.json文件中维护。所以我的问题是,如何在发布应用程序时设置变量值,而不是从配置文件/环境级别变量中读取它?
1 回答
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
ASP.NET Core 不使用构建配置,并且发布的代码并不特定于任何类型的环境。这是设计使然。您最好的选择是可能为每个客户分配自己的环境。然后,您可以拥有特定于客户的 appsettings.json 文件:appsettings.Customer1.json
、appsettings.Customer2.json
等。
使用的实际环境通常由ASPNETCORE_ENVIRONMENT
环境变量控制,尽管还有其他方法来指定环境。根据您最终托管的方式,执行此操作的最佳方法会有所不同。如果您在容器或 Azure 应用服务之类的东西中运行,那么只需坚持使用ASPNETCORE_ENVIRONMENT
环境变量,它可以很容易地为每个正在运行的实例设置。
如果您直接从命令行启动应用程序,则可以--environment
在调用 running 时通过命令行参数传递环境dotnet
。
例如,如果您将这些都托管在同一个 IIS 服务器上,那么您可以将其添加到 Web.config,但您可能需要一个比这更强大的解决方案。如果您为每个客户创建发布配置文件,则可以将以下内容添加到每个发布配置文件 ( .pubxml
):
<PropertyGroup> <EnvironmentName>Customer1</EnvironmentName> </PropertyGroup>
然后,当您使用该特定配置文件发布时,该环境将自动添加到Web.config
您的配置文件中。但是,这只是获取Web.config
. 实际发布的应用程序没有功能差异,您可以在事后轻松进入并将环境切换到其他环境。
- 1 回答
- 0 关注
- 90 浏览
添加回答
举报
0/150
提交
取消