是否真的需要.net core 2 API中的services.AddSingleton <iconfiguration>

时间:2017-10-04 21:29:55

标签: c# configuration .net-core asp.net-core-webapi asp.net-core-2.0

我在.NET Core 2 Web API控制器中访问了appsettings.json,只需添加以下内容:

public class MyController : Controller
    {
        private readonly IConfiguration appConfig;

        public MyController(IConfiguration configuration)
        {
            appConfig = configuration;
        }
    }

在services.AddMvc();:

之后,不在Startup类 ConfigureServices(IServiceCollection services)中添加以下内容
services.AddSingleton<IConfiguration>(Configuration);

我的方法有什么缺陷吗?在.Net Core 2配置部分的官方文档中,未提及使用&#39; AddSingleton&#39;甚至没有一次:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration

通过搜索我无法通过访问配置找到相关内容! https://docs.microsoft.com/en-us/search/index?search=AddSingleton&scope=ASP.NET+Core

下面的链接显示了 AddSingleton,就像必须执行

一样

Access appsettings.json values in controller classes

https://blogs.technet.microsoft.com/dariuszporowski/tip-of-the-week-how-to-access-configuration-from-controller-in-asp-net-core-2-0/

2 个答案:

答案 0 :(得分:10)

正如official roadmap for ASP.NET Core 2.0所说:

  

默认情况下,在ASP.NET Core 2.0中,IConfiguration实例将添加到服务容器中,以便所有应用程序都可以通过容器轻松检索配置值

所以框架本身已经调用了services.AddSingleton<IConfiguration>(或类似的)。

您可能会在WebHostBuilder.cs文件中看到此行为,或者(在使用实用程序扩展方法时)HostBuilder.cs文件中。

答案 1 :(得分:0)

我不确定是否需要它。但是我们有appsettings.local.json,如果不将其添加到program.cs中,则无法从appsetting.local.json中读取数据。 因此,在program.cs中,我们在ConfigureServices的{​​{1}}方法中添加了CreateWebHostBuilder语句

program.cs