2

我访问appsettings.json在.NET中的Core 2的Web API控制器只需添加如下:是services.AddSingleton <IConfiguration>真的需要在.NET核心2 API

public class MyController : Controller 
    { 
     private readonly IConfiguration appConfig; 

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

如果没有启动类中添加以下ConfigureServices(IServiceCollection服务)后services.AddMvc();:

services.AddSingleton<IConfiguration>(Configuration); 

是否有我的做法任何瑕疵?在.Net Core 2配置部分的官方文档中,没有提到使用'AddSingleton',甚至没有提到过: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/

回答

5

作为official roadmap for ASP.NET Core 2.0说:

一个IConfiguration实例将被添加到该服务于ASP.NET 2.0的核心容器默认情况下,让所有的应用程序可以很容易地通过容器

所以services.AddSingleton<IConfiguration>(或类似)已经由框架称为检索配置值。

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

+0

那么当用户在默认设置的旁边手动添加它时会发生什么?似乎没有警告或错误出现! –

+3

与ASP.NET Core DI中的任何其他注册一样,只要有人从“IServiceProvider”请求该服务,就会使用** last **注册。因为在你的情况下,注册是一样的,没有什么变化(你现在有两个相同的服务相同的注册)。 –