【问题标题】:Why am I getting an error in my ASP.NET Core SQL Server Express Connection String?为什么我的 ASP.NET Core SQL Server Express 连接字符串中出现错误?
【发布时间】:2018-04-06 15:15:47
【问题描述】:

我最近启动了一个新的 ASP.NET Core Web 应用程序,我想将它连接到我的本地 SQLExpress 数据库。我一直在关注文档,但是当它尝试在

处读取我的连接字符串时出现“值不能为空”的错误

options.UseSqlServer(configuration.GetConnectionString("DefaultConnection")

到目前为止,这是我的代码。在Startup.cs 我有以下设置:

using Microsoft.AspNetCore.Builder;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Blondie.CoreApiSql.Models;
using Microsoft.Extensions.Configuration;

namespace Blondie.CoreApiSql
{
    public class Startup
    {
        private readonly IConfiguration configuration;
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<DatabaseContext>
                (options => options.UseSqlServer(configuration.GetConnectionString("DefaultConnection")));
            services.AddMvc();
        }
        public void Configure(IApplicationBuilder app)
        {
            app.UseMvc();
        }
    }
}

当您运行应用程序时,会在以下行触发错误:

services.AddDbContext&lt;DatabaseContext&gt; (options =&gt; options.UseSqlServer(configuration.GetConnectionString("DefaultConnection")));

我在appsettings.json 中定义了连接字符串,如文档中所述:

{
    "ConnectionStrings": {
        "DefaultConnection": "Data Source=DESKTOP-PC009\\SQLEXPRESS;Database=Senua;Trusted_Connection=True;MultipleActiveResultSets=true"
    },
    "Logging": {
      "IncludeScopes": false,
      "Debug": {
        "LogLevel": {
          "Default": "Warning"
        }
      },
      "Console": {
        "LogLevel": {
          "Default": "Warning"
        }
      }
    }
  }

我已经创建了Senua 数据库,其中包含一个没有数据的表。我的数据库使用 Windows 身份验证。

我已经用我的单个表以下列方式定义了我的数据库上下文。

public class DatabaseContext : DbContext
{
    public DatabaseContext(DbContextOptions<DatabaseContext> options) 
        : base(options)
    {
    }
    public DbSet<Hellheim> Hellheim { get; set; }
}

据我了解,此错误通常仅在您未能在 appsettings.json 文件中定义连接字符串但我已经添加时才会出现,以前有人遇到过这个问题吗?

【问题讨论】:

  • 为什么把配置声明为private应该是public IConfiguration configuration;
  • @JohnNyingi:没关系,当然不会影响与这里的 OP 问题有关的任何事情。
  • 你在哪里给configuration赋值?即看起来configurationnull,因为您没有在代码中的任何位置显示它。
  • 他错过了分配。至少有一个构造函数定义来分配配置,因为它依赖于依赖注入
  • public Startup(IConfiguration configuration) { this.configuration = configuration; }(假设 ASP.NET Core 2)。

标签: c# sql-server asp.net-core connection-string


【解决方案1】:

IConfiguration 的Configuration 定义并分配一个值,并且需要一个值。 在构造函数中定义依赖注入

public Startup(IConfiguration configuration)
    {
        this.configuration = configuration;
    }

【讨论】:

  • 这很好,谢谢大家的帮助:)
猜你喜欢
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多