Asp.Net Core 2.0 中的自定义环境
Custom environments in Asp.Net Core 2.0
我想要支持的不仅仅是 Microsoft.AspNetCore.Hosting.EnvironmentName
中定义的内置 "Development"、"Staging" 和 "Production" 环境。我意识到在程序初始化期间设置环境时,我可以自由地发明我想要的任何名称,但这不是问题所在。 Microsoft.AspNetCore.Hosting.HostingEnvironmentExtensions
中定义了 3 种扩展方法,它们似乎 无处不在 :IsDevelopment()
、IsStaging()
和 IsProduction()
.
如何自定义 IsDevelopment()
的行为,以便多个自定义环境名称每个 return 为真?
比如我想区分本地开发和远程开发; 2 个具有自己的配置设置的环境,但都被视为 "Development"。另一个例子可能是多个 "Staging" 环境;一个用于内部测试,一个用于 external/client 测试,但两者都被认为是 "Staging".
我不相信我可以编写自己的 IsDevelopment() 扩展方法并安全地确保我的扩展方法总是比 Microsoft 的 (Closer is better) 更受青睐。例如。我的可能在我的项目中被代码使用,但是当Mvc中的代码本身调用它时呢?
目前无法做到这一点,因为 3 IsDevelopment()
、IsStaging()
和 IsProduction()
的存在和用法 ] 扩展方法。
我基本上最终做的是定义我自己的自定义环境,并提供从每个返回到 Asp.Net 核心中定义的 3 个的映射。
在 Main() 中,我创建了一个我的专用配置的实例 class;它找出代码的 运行 所在的自定义环境。然后,当我调用 WebHostBuilder.UseEnvironment() 时,我使用 class 中的 属性 表示 Asp.Net 对应我自定义的核心环境。最后,我将 class(单例)注入到 DI 容器中,以便根据需要使用它。
我想要支持的不仅仅是 Microsoft.AspNetCore.Hosting.EnvironmentName
中定义的内置 "Development"、"Staging" 和 "Production" 环境。我意识到在程序初始化期间设置环境时,我可以自由地发明我想要的任何名称,但这不是问题所在。 Microsoft.AspNetCore.Hosting.HostingEnvironmentExtensions
中定义了 3 种扩展方法,它们似乎 无处不在 :IsDevelopment()
、IsStaging()
和 IsProduction()
.
如何自定义 IsDevelopment()
的行为,以便多个自定义环境名称每个 return 为真?
比如我想区分本地开发和远程开发; 2 个具有自己的配置设置的环境,但都被视为 "Development"。另一个例子可能是多个 "Staging" 环境;一个用于内部测试,一个用于 external/client 测试,但两者都被认为是 "Staging".
我不相信我可以编写自己的 IsDevelopment() 扩展方法并安全地确保我的扩展方法总是比 Microsoft 的 (Closer is better) 更受青睐。例如。我的可能在我的项目中被代码使用,但是当Mvc中的代码本身调用它时呢?
目前无法做到这一点,因为 3 IsDevelopment()
、IsStaging()
和 IsProduction()
的存在和用法 ] 扩展方法。
我基本上最终做的是定义我自己的自定义环境,并提供从每个返回到 Asp.Net 核心中定义的 3 个的映射。
在 Main() 中,我创建了一个我的专用配置的实例 class;它找出代码的 运行 所在的自定义环境。然后,当我调用 WebHostBuilder.UseEnvironment() 时,我使用 class 中的 属性 表示 Asp.Net 对应我自定义的核心环境。最后,我将 class(单例)注入到 DI 容器中,以便根据需要使用它。