【问题标题】:Custom environments in Asp.Net Core 2.0Asp.Net Core 2.0 中的自定义环境
【发布时间】:2017-12-29 03:26:06
【问题描述】:

我想支持的不仅仅是Microsoft.AspNetCore.Hosting.EnvironmentName 中定义的内置“开发”、“暂存”和“生产”环境。我意识到在程序初始化期间设置环境时,我可以随意发明任何我想要的名称,但这不是问题。 Microsoft.AspNetCore.Hosting.HostingEnvironmentExtensions 中定义了 3 种扩展方法,似乎无处不在IsDevelopment()IsStaging()IsProduction()

您如何自定义IsDevelopment() 的行为,以便多个自定义环境名称均返回true?

比如我想区分本地开发和远程开发; 2 个具有自己配置设置的环境,但都被视为“开发”。另一个例子可能是多个“暂存”环境;一种用于内部测试,一种用于外部/客户端测试,但两者都被视为“暂存”。

我不相信我可以编写自己的 IsDevelopment() 扩展方法并安全地确保我的方法总是比微软的 (Closer is better) 更受青睐。例如。我的可能会被我项目中的代码使用,但是当 Mvc 本身的代码调用它时呢?

【问题讨论】:

    标签: asp.net-core-2.0


    【解决方案1】:

    由于IsDevelopment()IsStaging()IsProduction()这3个扩展方法的存在和使用,目前没有办法。

    我基本上最终做的是定义我自己的自定义环境,并提供从每个返回到 Asp.Net Core 中定义的 3 个的映射。

    在 Main() 中,我创建了我的专用配置类的实例;它计算出代码在哪个自定义环境中运行。然后,当我调用 WebHostBuilder.UseEnvironment() 时,我使用该类中的一个属性,该属性指示与我的自定义环境相对应的 Asp.Net Core 环境。最后,我将我的类(单例)注入到 DI 容器中,以便根据需要使用它。

    【讨论】:

      猜你喜欢
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 2018-07-01
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多