我一直在努力將ASP.NET 5 RC1應用程序升級到ASP.NET Core 1.我已經通過將軟件包(AspNet更換為AspNetCore)和從EF7更改為EF Core(Microsoft.Data.Entity到Microsoft)成功升級了它。 EntityFrameworkCore)。

我遇到的問題是Connection Timeout Expired的間歇性SqlException。

這是完整的例外:

System.Data.SqlClient.SqlException occurred.  
Class=11 ErrorCode=-2146232060 HResult=-2146232060 LineNumber=0  
**Message=Connection Timeout Expired.  The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement.  This could be because the pre-login handshake failed or the server was unable to respond back in time.  The duration spent while attempting to connect to this server was - [Pre-Login] initialization=924; handshake=6;**   
  Number=-2   
  Procedure=""  
  Server=(localdb)\mssqllocaldb  
  Source=.Net SqlClient Data Provider  
  State=0  
  StackTrace:  
       at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)  

我試過增加命令超時,如下所示:

public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
    this.Database.SetCommandTimeout(120);
}

這條線上引發了異常,但當我發表評論時,它會在其他地方發生,這使我相信它是在第一次訪問數據庫時發生的。

app.ApplicationServices.GetService<ApplicationDbContext>().Database.Migrate();

一般承認的答案

您的問題與使用服務器建立連接所需的時間有關。更改CommandTimeout值(允許命令執行的時間量)將不會對此產生任何影響。您需要考慮增加連接超時值,這是通過連接字符串實現的:

Server=(localdb)\mssqllocaldb;Database=yourDb;Trusted_connection=true;connect timeout=100;


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow