【发布时间】:2020-08-26 20:06:06
【问题描述】:
当我尝试从数据库中检索我的数据时,我收到一个错误 Object reference not set to an instance of an object。我知道 EF 有一个我可以使用的 dbcontext,但我想尝试这种方法,因为我的同事使用这种方法。我可以很好地获取 ConnectionString,我在断点中看到了它,但是在那一行之后,我得到了错误:
System.Configuration.ConnectionStringSettingsCollection.this[string].get 返回 null
我的代码如下:
appsettings.json
"AllowedHosts": "*",
"ConnectionStrings": {
"DefaultConnection": "Server=DESKTOP-MIHT9TM\\SQLEXPRESS;Database=react_db;User=sa;Password=OtlPHP07"
}
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services
.AddMvc(options =>
{
options.EnableEndpointRouting = false;
})
.AddNewtonsoftJson()
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
options.JsonSerializerOptions.WriteIndented = true;
});
services.AddSingleton<IConfiguration>(Configuration);
}
DepartmentController.cs
[Route("api/[controller]")]
[ApiController]
public class DepartmentController : ControllerBase
{
private readonly IConfiguration configuration;
public DepartmentController(IConfiguration configuration)
{
this.configuration = configuration;
}
[HttpGet]
public IActionResult Get()
{
DataTable table = new DataTable();
string query = @"SELECT * FROM dbo.Departments";
var conString = configuration.GetConnectionString("DefaultConnection");
using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings[conString].ConnectionString))
{
using (var cmd = new SqlCommand(query, con))
{
using (var da = new SqlDataAdapter(cmd))
{
cmd.CommandType = CommandType.Text;
da.Fill(table);
}
}
}
return Ok(table);
}
}
我在这一行遇到错误:using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings[conString].ConnectionString))
编辑
这是 conString 的值
我什至尝试过这段代码...
var conString = configuration.GetConnectionString("DefaultConnection");
using (var con = new SqlConnection(ConfigurationManager.AppSettings[conString].ToString()))
【问题讨论】:
-
应该是:使用(var con = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
-
DefaultConnection 在我的 appsettings.json 中,而不是在 WebConfig 中,先生。
-
“conString”变量的值是多少/
-
@LaxmiLalMenaria,请查看我的编辑
-
你已经有了连接字符串,所以你可以直接使用 using (var con = new SqlConnection(conString))