【问题标题】:Changing the ASPNETCORE_ENVIRONMENT value from Code从代码更改 ASPNETCORE_ENVIRONMENT 值
【发布时间】:2021-12-09 06:25:23
【问题描述】:

我想在初始化应用程序时更改代码中的 ASPNETCORE_ENVIRONMENT 值。这是用

完成的
Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", [newValue]);

并且发生在应用程序启动的早期,在任何对 Use[XY] 的调用之前。
如果我在应用程序的整个生命周期中使用Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") 检查该值,它会返回所需的值。

但是,Environment-Tag 帮助程序始终使用在应用程序启动时设置的初始值(旧值)。
在谷歌搜索时,我发现了很多关于如何从应用程序外部更改“ASPNETCORE_ENVIRONMENT”值的帖子,但没有关于如何从应用程序内部完成的帖子。

这个问题的背景是,我们有关于应用程序运行哪个阶段的信息,保存在数据库中,我们想要使用这些信息。

更新
看来,我找到了解决方案,如果可靠,我会发布它。

【问题讨论】:

    标签: asp.net-core asp.net-core-3.1 asp.net-core-tag-helpers


    【解决方案1】:

    Asp.net Core 在应用程序启动时初始化 IWebHostEnvironment 实现实例并将其注册为单例。此接口有一个读/写属性EnvironmentName,然后在应用程序的整个生命周期中将其用作“环境”值。
    因此解决方案是:

    var webHostEnvironment = [ServiceCollection].GetRequiredService<IWebHostEnvironment>();
    webHostEnvironment.EnvironmentName=[my value];
    

    重要的是,赋值越早越好,所以在应用程序的Configure-方法中,它已经设置为它的目标值。

    我测试了一些场景,到目前为止,我还没有发现任何问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多