我在.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,就像必须执行:
一样答案 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