asp.net-core - ASP.NET Core 仅部署适用的 appsettings.{EnvironmentName}.json
问题描述
我已经制作了我的第一个概念证明 ASP.NET Core 应用程序,我有 5 个 appsettings 文件:
- 应用设置.json
- appsettings.Development.json
- appsettings.Test.json
- appsettings.Staging.json
- appsettings.Production.json
我在 IIS 中运行应用程序,所以我实际上有 web.config 文件,以便我可以ASPNETCORE_ENVIRONMENT
基于每个应用程序设置环境变量:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<aspNetCore processPath="dotnet" >
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development"></environmentVariable>
</environmentVariables>
</aspNetCore>
</system.webServer>
</configuration>
我有 4 个 web.config 转换,因此我可以从 Visual Studio 发布,它会为每个环境设置正确的环境变量值。
当我发布到每个环境时,它会发布所有 appsettings 文件。是否有可能让它在根 appsettings.json 和适用环境特定的一个上发布,但省略其他?
解决方案
不,这是不可能的。ASP.NET Core 与 ASP.NET 不同。在 ASP.NET 中,您实际上是为环境发布的;如果您想切换到不同的环境,则需要重新发布。为所有环境发布了 ASP.NET Core。同一个已发布的应用程序可以被拾取并移动到任何环境中,而无需更改。实际环境一般是外化的,比如via和环境变量,可以随心所欲的改变,不需要部署新的代码。这实际上是 ASP.NET Core 的一个特性。
现在,您处理环境变量的方式确实使其依赖于发布,但这只是修改 web.config,它本身仅在部署到 IIS 时才有意义。ASP.NET Core 本身并不关心或使用 web.config,老实说,甚至不关心或使用发布配置。
推荐阅读
- android - 使用多个键搜索和更新 Firebase
- python - 运行多个 libpostal 实例
- java - 抽象类 Java
- rabbitmq - Camel RabbitMQ concurrentConsumers 和 threadPoolsize 用于必须按顺序处理的消息
- c - C - 自动分配给下一个字符数组的截断字符数组输入
- javascript - 结合两个非常相似但包含明显差异的函数
- asp.net-core - 通过 AspNetCore WebApp 利用 Serilog.AspNetCore 和 AutofacSerilogIntegration 从 .NET Core 类库中解析 Microsoft.Extensions.Logging.ILogger
- c# - DataAnnotations 无法提交使用 ajax 调用的部分视图的表单
- java - 使用 REST API 和 Java Jersey 应用程序在 Wordpress 上发布帖子
- reactjs - 想要检索单击按钮的特定行的值。但我得到了最后一个