针对不同环境配置服务的正确方法是什么?
例如,我想将 FakeService 添加到用于 DEV 配置的服务集合和用于 Release 配置的 RealService。
public void ConfigureServices(IServiceCollection services)
{
/* Need to check environment */
services.AddSingleton<IService, FakeService>();
....
}
最佳答案
MVC 6 有一个定义它是什么环境的值,这可以通过环境变量 ASPNET_ENV 来设置。您可以从 IHostingEnvironment 获取该值:
public void ConfigureServices(IServiceCollection services)
{
var env = services.BuildServiceProvider().GetRequiredService<IHostingEnvironment>();
if (env.IsDevelopment())
Console.WriteLine("Development");
else if (env.IsProduction())
Console.WriteLine("Production");
else if (env.IsEnvironment("MyCustomEnvironment"))
Console.WriteLine("MyCustomEnvironment");
}
您可以通过右键单击 > 属性 > 调试 > 环境变量在 VS2015 中设置项目的值:
这里有一些关于 configuring with environment variables 的更多信息.
关于c# - 如何在 ASP.NET MVC 6 中为不同的环境注册不同的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32842920/