c# - 如何在 ASP.NET MVC 6 中为不同的环境注册不同的服务?

标签 c# asp.net .net dependency-injection asp.net-core-mvc

针对不同环境配置服务的正确方法是什么?

例如,我想将 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 中设置项目的值:

Environment variables

这里有一些关于 configuring with environment variables 的更多信息.

关于c# - 如何在 ASP.NET MVC 6 中为不同的环境注册不同的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32842920/

相关文章:

c# - WCF ServiceHost 已经有 5 个行为

c# - 四舍五入小数位不起作用?

asp.net - 如何在 ASP.NET Web 表单中以 CSV 形式提供 View

java - Hazelcast - .Net 客户端支持可靠的主题吗?

c# - 在 Repeater Asp.net 中查找标签控件

c# - 过滤选项的设计模式推荐

c# - 违反唯一索引,试图在新上下文中插入对象图

c# - Angular 2 和 C#/.NET

c# - 在 C# 中初始化一个 Generic.List

c# - 将属性添加到动态对象 .NET