2017-09-22 83 views
1

我想要支持的不仅仅是在Microsoft.AspNetCore.Hosting.EnvironmentName中定义的内置“开发”,“分段”和“生产”环境。我意识到,在程序初始化期间设置环境时,我可以自由地创造任何想要的名称,但这不是问题。在Microsoft.AspNetCore.Hosting.HostingEnvironmentExtensions中定义了3种扩展方法,看起来无处不在IsDevelopment(),IsStaging()IsProduction()Asp.Net Core 2.0中的自定义环境

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

例如,我想区分本地开发和远程开发; 2环境与他们自己的配置设置,但都被视为“发展”。另一个例子可能是多个“分段”环境;一个用于内部测试,一个用于外部/客户端测试,但都被认为是“分段”。

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

回答

0

目前并没有办法做到这一点,由于存在和使用的3 IsDevelopment()IsStaging(),并且IsProduction()扩展方法

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

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

相关问题