加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-core – 如何在部署asp.net核心应用程序时处理环境差异

发布时间:2020-12-16 04:03:34 所属栏目:asp.Net 来源:网络整理
导读:有没有办法在部署ASP.NET Core应用程序时更改环境设置(比如使用调试/发布版本进行配置文件转换)? 在.NET Core应用程序中维护多个环境设置的最佳方法是什么(类似于 appSettings file =“local.config”用于本地,登台和生产)? 解决方法 中央配置文件是appset
有没有办法在部署ASP.NET Core应用程序时更改环境设置(比如使用调试/发布版本进行配置文件转换)?

在.NET Core应用程序中维护多个环境设置的最佳方法是什么(类似于< appSettings file =“local.config”>用于本地,登台和生产)?

解决方法

中央配置文件是appsettings.json,您可以拥有多个文件,如appsettings.Production.json等,它们将被加载并覆盖appsettings.json中的设置.

例如

// Set up configuration sources.
        var builder = new ConfigurationBuilder()
            .SetBasePath(hostEnv.ContentRootPath)
            .AddJsonFile("appsettings.json",optional: false,reloadOnChange: true)
            .AddJsonFile($"appsettings.{hostEnv.EnvironmentName}.json",optional: true,reloadOnChange: true)
            .AddEnvironmentVariables();

实现这一目标所需要的只是用于设置环境类型的环境变量(参见文档here).

如果将AddEnvironmentVariables()添加到配置构建器,则还可以使用覆盖的环境变量.所以如果你有一个appsettings.json

{
    "Data"  {
         "Default" {
              "ConnectionString" : "..."
         }
    }
}

并且想要通过环境变量覆盖它,你需要设置一个名为“Data:Default:ConnectionString”的环境变量,它的值将覆盖appsettings.config和appsettings.Production.config中的设置(假设你的.AddEnvironmentalVariables()在.AddJsonFile() – 使用匹配键获胜的最后一次注册)之后调用环境变量中的值.

您可以在官方文档here中找到更多信息.

更新

由于在评论中有些人认为这是设置环境的唯一方法,因此有许多方法可以设置环境变量(大部分都在Use multiple environments in ASP.NET Core中记录),所有这些最终都归结为环境变量,只是在不同的范围内:

>环境变量(全局,Windows cmd.exe在powershell上设置ASPNETCORE_ENVIRONMENT =开发或$Env:ASPNETCORE_ENVIRONMENT =“开发”,导出ASPNETCORE_ENVIRONMENT = Linux上的开发)
>每个命令环境变量(即linux:ASPNETCORE_ENVIRONMENT =生产dotnet MyApp.dll)
> Docker容器,即通过docker-compose.yaml

web:
    environment:
    - ASPNETCORE_ENVIRONMENT=Debugging

> Docker容器通过命令行docker运行-e ASPNETCORE_ENVIRONMENT =调试
>在IIS中通过web.config.

<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" forwardWindowsAuthToken="false" stdoutLogEnabled="true" >
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
  </environmentVariables>
</aspNetCore>

>在IIS上按AppPool设置(参见here)
>在Linux上通过服务定义文件(见docs)
> Azure App Service via Environment变量,可以按插槽设置,并具有不同的插槽,用于分段,开发,生产,即部署到分段,进行热身和交换生产
>每次执行通过dotnet运行–launch-profile开发

它们都在特定范围内更改/设置环境变量(全局,本地到容器,在应用程序池内,每次执行等).选择一个适合您需求的产品.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读