System.Configuration.ConnectionStringSettingsCollection.this [string] .get在ASP.Net Core上返回null

问题描述 投票:0回答:1

当我尝试从数据库中检索数据时,出现Object reference not set to an instance of an object错误。我知道EF具有我可以使用的dbcontext,但是我想在我的同事使用这种方法时尝试这种方法。我可以很好地使用ConnectionString,在断点处可以看到它,但是在那一行之后,出现错误System.Configuration.ConnectionStringSettingsCollection.this[string].get returned 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的值

enter image description here

我曾尝试过此代码...

var conString = configuration.GetConnectionString("DefaultConnection");
            using (var con = new SqlConnection(ConfigurationManager.AppSettings[conString].ToString()))
c# .net-core
1个回答
0
投票

在SqlConnection上,尝试使用在构造函数上传递的配置对象,而不是它的新实例。甚至更好的是您已经拥有的conString变量(它确实使用了在构造函数上传递的配置实例)

© www.soinside.com 2019 - 2024. All rights reserved.