首页 > 解决方案 > 如何从注入到asp net core中的控制器的IConfiguration访问ConnectionString?

问题描述

我有一个带有这个 appsetting.json 文件的 AspnetCore 项目:

{
   "Logging": {
      "IncludeScopes": false,
      "LogLevel": {
        "Default": "Warning"
      }
    },
   "ConectionStrings": {
     "DB": "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=test;Data Source=ENIAC"
   }
}

现在我得到这个设置并用这个代码将它注入我的控制器:

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();
    Configuration = builder.Build();
}

public IConfigurationRoot Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddMvc();
    services.AddSingleton<IConfiguration>(Configuration);
}

在我的控制器中,我正在尝试使用以下代码访问连接字符串:

public HomeController(IConfiguration _config) {
    config = _config;
    var t = config.GetConnectionString("DB");
    Debug.WriteLine(t);
}

t现在为空。

我的错误在哪里?我该如何解决这个问题?

标签: c#asp.net-core

解决方案


您的 appsettings.json 文件中有错字:ConectionStrings应该是ConnectionStrings.


推荐阅读