use*_*447 3 asp.net-core asp.net-core-2.0
我正在尝试从中读取连接字符串,appsettings.json并且正在使用:
services.AddSingleton(Configuration);
Run Code Online (Sandbox Code Playgroud)
启动时的这一行抛出空值。我对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();
}
}
Run Code Online (Sandbox Code Playgroud)
我的控制器:
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到你Startup缺少一个构造函数。在 ASP.NET Core 2 中,当它调用 startup(基于一个典型WebHost.CreateDefaultBuilder(args).UseStartup<Startup>()的 vanilla 内部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;
}
Run Code Online (Sandbox Code Playgroud)
只需添加即可解决您的 IConfiguration 为空问题。
现在,您不必将该配置添加到 DI 中,因为默认情况下它应该已经在那里,您可以将它按原样添加到您的控制器构造函数中。但是,这样做没有坏处。
最后,要加入合唱团,直接在控制器中使用 IConfiguration 不是一个好主意。而是查看强类型配置设置。有一些教程可以提供帮助 - 这是我找到的第一个链接- 但要点是您的控制器最终看起来像这样:
public class CreateController : Controller
{
public ConnectionStrings _ConnectionStrings;
public CreateController(IOptions<ConnectionStrings> connectionStrings)
{
_ConnectionStrings = connectionStrings.Value;
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3899 次 |
| 最近记录: |