gpt4 book ai didi

asp.net-core - IConfiguration 对象为空。

转载 作者:行者123 更新时间:2023-12-04 03:01:40 25 4
gpt4 key购买 nike

我正在尝试从 appsettings.json 读取连接字符串,我正在使用:

services.AddSingleton(Configuration);

启动时的这一行抛出空值。我是 core2.0 的新手。有人可以告诉我缺少什么吗?

我的创业公司:

public class Startup
{
public static string ConnectionString { get; private set; }
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton(Configuration);
services.AddSingleton<IConfiguration>(Configuration);
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}

app.UseMvc();
}
}

我的 Controller :

public class CreateController : Controller
{
public IConfiguration _ConnectionString;
public CreateController(IConfiguration configuration)
{
_ConnectionString = configuration;
}

public IEnumerable<string> Get()
{
Markets();
}

public string Markets()
{
using(SqlConnection con = new SqlConnection(_ConnectionString.GetSection("Data").GetSection("ConnectionString").Value))
{
return con.Database;
}
}
}

最佳答案

我注意到你的 Startup缺少构造函数。在 ASP.NET Core 2 中,当它调用启动时(基于普通 WebHost.CreateDefaultBuilder(args).UseStartup<Startup>() 中的典型 Program.BuildWebHost )会自动将配置传递到 Startup 构造函数中:

public class Startup
{
public IConfiguration Configuration { get; }

// This configuration is automatic, if WebHost.CreateDefaultBuilder(args) is used in Program.cs
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}

只需添加即可解决您的 IConfiguration is null 问题。

现在,您不必将该配置添加到 DI 中,因为默认情况下它应该已经在那里,您可以按原样将其添加到您的 Controller 构造函数中。但是,这样做没有坏处。

最后,加入合唱团,直接在 Controller 中使用 IConfiguration 不是一个好主意。而是查看强类型配置设置。那里有可以提供帮助的教程 - 这里是 the first link我发现了 - 但要点是你的 Controller 最终会看起来像这样:

public class CreateController : Controller
{
public ConnectionStrings _ConnectionStrings;
public CreateController(IOptions<ConnectionStrings> connectionStrings)
{
_ConnectionStrings = connectionStrings.Value;
...

关于asp.net-core - IConfiguration 对象为空。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48659671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com