构建过程中ASP.NET Core设置托管环境

2023-12-19

我有一个ASP.NET Core Api我在其中使用 appsettings.{environmentname}.json 配置文件。然后,我还有带有不同环境选项的相应 launchSettings.json 文件,以便我可以使用任何特定的环境设置文件运行。

在 Startup.cs 中,我们有一个条件设置,如果我们处于非生产环境中,那么我们使用一组特定的Jwt authentication(只是关闭了一些验证检查),然后在产品中,我们加载了一个不同的版本,该版本打开了所有检查。

在我的本地主机上,当environment.IsDevelopment()返回true,而environment.IsProduction()返回false时,这非常有效。伟大的!

但是,当我通过构建过程运行它并部署到我们的测试环境时,environment.IsDevelopment() 现在返回 false。

我在 Program.cs 文件中添加了选项来添加 ConfigurationBuilder,以便我可以将变量传递给我的构建过程,如下所示:

dotnet restore
dotnet build --environment "Development"
dotnet publish -o ..\Artifacts

我将发布相关文件以及相关代码以获取更多信息......

程序.cs

public static IWebHost BuildWebHost(string[] args)
{
    var config = new ConfigurationBuilder()
        .AddCommandLine(args)
        .Build();

    return WebHost.CreateDefaultBuilder(args)
        .UseConfiguration(config)
        .UseStartup<Startup>()
        .UseNLog()
        .Build();
}

Startup.cs(ConfigureServices 方法)

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>
{
    // removed code not relevant...


    // options.TokenValidationParameters = Environment.IsProduction()
    // options.TokenValidationParameters = Environment.IsEnvironment("Prod")
    options.TokenValidationParameters = Environment.IsDevelopment()
        ? devTokenValidationParameters
        : prodTokenValidationParameters;

    // options.TokenValidationParameters = devTokenValidationParameters;
});

为什么辅助环境。Is{EnvironmentName}() 检查在这里不起作用?


环境名称是runtime概念而不是一个compile(或建立)时间概念。这意味着在构建(或发布)应用程序时,环境尚不清楚并且设置无效。当您发布应用程序时,您的代码未运行。

您可以在以下情况下控制环境名称:running应用程序例如通过论证dotnet run:

dotnet run --environment=Production

或者使用已知的环境变量ASPNETCORE_ENVIRONMENT。例如,通过在命令行执行:

set ASPNETCORE_ENVIRONMENT=Production

该变量也可以使用以下方式设置launchSettings.json文件用于调试目的。使用 Visual Studio 创建新项目时会生成此文件或dotnet new.

应用程序的默认环​​境是生产环境。请参考到文档 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/environments有关此主题的更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建过程中ASP.NET Core设置托管环境 的相关文章

随机推荐

  • 如何在不显示窗口的情况下运行PowerShell脚本?

    如何才能运行一个电源外壳 http en wikipedia org wiki Windows PowerShell脚本而不向用户显示窗口或任何其他标志 换句话说 脚本应该在后台安静地运行 而不向用户发出任何信号 不使用第三方组件的答案需额
  • 使用键打印字典中的最高值[重复]

    这个问题在这里已经有答案了 我的字典是这样的 A 4 B 10 C 0 D 87 我想用它的键找到最大值 用它的键找到最小值 输出将是这样的 最大 87 键是D 分钟 0 键是C 我知道如何从字典中获取最小值和最大值 有没有办法在一个语句中
  • IDictionary 或 NameValueCollection

    我目前正在编写一个接口 允许应用程序将异常数据发送到中央存储库以用于支持目的 我对如何传递额外的上下文数据感到困惑 public interface IExceptionNotifier void Notify Exception ex N
  • 通知中的音乐播放器控制

    如何在 Android 中设置带有播放 暂停 下一个和上一个按钮的通知 我是 Android 新手 也是堆栈溢出新手 所以请耐心听我说 我设置了歌曲开始播放时的通知 如下所示 SuppressLint NewApi public void
  • MemoryError - 如何使用 Python 通过 Google Drive SDK 下载大文件

    从 Google 云端硬盘下载大文件时 我的内存不足 我假设tmp content read 1024 不起作用 但如何解决呢 谢谢 def download file service file id drive file service
  • bat文件中设置cygwin环境变量

    我需要设置几个应该在 cygwin shell 中可用的环境变量 我尝试跑步 c Program Files x86 Microsoft Visual Studio 10 0 VC bin amd64 vcvars64 bat在 bashr
  • 如何检测zstd压缩?

    我目前正在开发一个 python 应用程序 它可以与 facebook api 一起使用 众所周知 facebook热爱自己的技术 正在与zstd合作进行数据压缩 问题 facebook 要么返回带有正常 json 的未压缩响应 要么如果响
  • 如何获取sql作业中step1到step2的值

    我需要创建一个 SQL 作业 Step1 在 TaskToProcess 表中插入一行并返回 ProcessID PK 和 Identity Step2 检索生成的进程 IDstep1并将值传递给 SSIS 包并执行 SSIS 包 这在 S
  • 有没有可以在 Mono 上运行的 F# IDE?

    我在 Mac 上使用 F 我想知道 kbow 是否有任何可以在单声道 不是通用编辑器 上工作的 F IDE 似乎有一个MonoDelvelop 插件 http artwild blogspot com 2008 08 f addin for
  • 使用 _* 的 varargs 的 Scala 类型归属导致错误

    我对 Scala 可变参数有一个初步的了解 接受可变参数的方法的参数需要hint它是一个 varargs 使用 使用Scala 2 10 3 我定义了以下两个方法 scala gt def method varargs Int more S
  • Qt QCalendarWidget QSS 样式

    我知道没有人支持QCalendarWidget QSS样式 但有人知道一些更改部分颜色的解决方法1 and 2 of the QCalendarWidget 浅蓝色部分1白色部分2 Thanks 我已经检查过QCalendarWidget
  • 升级到 2021-06 (4.20.0) 后,Eclipse 内容辅助循环失败

    有人问了类似的问题here https stackoverflow com questions 68199554 content assist cannot find proposals in loop if there is code b
  • 如何在 Delphi 中输入分数?

    我有一个应用程序将使用测量值 特别是小至 1 16 英寸 我真的想要一种方便的方式让最终用户输入包含小数部分的值 例如 3 7 16 我意识到我可以要求用户只输入十进制值 即 3 1875 但我真的想要一种更好的方法 有谁知道可以轻松输入的
  • 从 ArrayList 中删除所有出现的元素

    我在用java util ArrayList 我想删除所有出现的特定元素 List
  • 检索 Dynamics 2011 中的选项集

    我正在使用此代码来检索全局选项集 var request new RetrieveOptionSetRequest Name OptionsetNameGoesHere var retrieveOptionSetResponse Retri
  • 在 eclipse 中使用 mahout 而不使用 Maven

    我真的不想使用maven 因为它看起来很麻烦 有没有办法只下载 mahout 并在我的 eclipse 项目中使用它 我从使用 Maven 得到的只是构建路径错误和数百万条警告 我一直在寻找一种方法来做到这一点 但人们似乎一直都在使用 Ma
  • 四舍五入至小数点后两位

    Math round doubleValue 100 100 0 有没有更好的方法将小数四舍五入到小数点后两位 如果您对小数位以及精确的小数值感兴趣 您通常应该使用java math BigDecimal http download ora
  • Zend 实例随机丢失

    我有一个在 zend 上运行的网站 最近它表示登录时会丢失会话变量 auth Zend Auth getInstance 有时似乎不起作用任何线索可能是什么问题 None
  • Realm 中具有惰性属性的复合键

    我发现了在 Swift 中使用带有复合主键的 Realm 的绝佳解决方案 https github com realm realm cocoa issues 1192 https github com realm realm cocoa i
  • 构建过程中ASP.NET Core设置托管环境

    我有一个ASP NET Core Api我在其中使用 appsettings environmentname json 配置文件 然后 我还有带有不同环境选项的相应 launchSettings json 文件 以便我可以使用任何特定的环境