Asp.Net Core 2.0 中的自定义环境

3
我希望能够支持超出 Microsoft.AspNetCore.Hosting.EnvironmentName 中定义的内置环境 "Development"、"Staging" 和 "Production"。我知道在程序初始化期间设置环境时,我可以随意发明任何名称,但这不是问题所在。似乎有 3 个扩展方法在 Microsoft.AspNetCore.Hosting.HostingEnvironmentExtensions 中被定义,并且到处都在用它们: IsDevelopment()IsStaging()IsProduction()
那么,如何自定义 IsDevelopment() 的行为,使得多个自定义环境名称可以同时返回 true?
例如,我想区分本地开发和远程开发;这两种环境具有各自的配置设置,但均被视为 "Development"。另一个例子可能是多个 "Staging" 环境;其中一个用于内部测试,另一个用于外部/客户端测试,但两者都被视为 "Staging"。
我认为不能编写自己的 IsDevelopment() 扩展方法并确保它总是优先于 Microsoft 的 (越近越好)。例如,我的代码中可能会使用我的方法,但 Mvc 中的代码又怎么办呢?
1个回答

2

目前还没有办法实现这个,因为存在并使用了三个扩展方法IsDevelopment()IsStaging()IsProduction()

我基本上做的是定义自己的自定义环境,并提供一个映射到Asp.Net Core中定义的3个环境的方式。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接