繁体   English   中英

.NET Core System.InvalidOperationException:实例失败

[英].NET Core System.InvalidOperationException: Instance failure

将 EF Core 连接到本地 SQL Express 实例时,我突然看到以下错误 -

System.InvalidOperationException: Instance failure.
   at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)...

连接字符串来自我的 appsettings.json 文件 -

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "ConnectionStrings:DefaultDatabase": "Server=.\\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=True;User ID=sqluser;Password=password;"
}

我正在像这样访问配置-

public void InitializeContainer(IServiceCollection services, IConfiguration configuration)
{
    var db = configuration.GetValue<string>("ConnectionStrings:ConnectionStrings:DefaultDatabase");

    services.AddDbContext<MyContext>(options =>
        options.UseSqlServer(db));
}

我知道我看到这个错误的原因是因为字符串被转义,所以我的变量最终看起来像这样Server=.\\\\SQLEXPRESS;Database=CustomerContact;Trusted_Connection=True;User ID=swwdev;Password=password; .

很好,但我该如何解决这个问题? 如果我将appsettings.json更改为单个\我会收到另一个错误,说 JSON 无效。 直到最近,我才明白它发生了什么变化。

appsettings.json文件和配置代码都有问题。

将您的连接字符串部分更改为:


"ConnectionStrings": {
      "DefaultConnection": "Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=False;User ID=...;Password=...;Connect Timeout=15;Encrypt=False;Packet Size=4096;"
}
....

和你的启动文件:

public IConfiguration Configuration { get; }

        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

.....
var connString=Configuration.GetConnectionString("DefaultConnection");
services.AddDbContext<MyContext>(options => options.UseSqlServer(connString));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM