簡體   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