質問

私はASP.NET 5 RC1アプリケーションをASP.NET Core 1にアップグレードしています。AspNetをAspNetに置き換え、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
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ