I've been working on upgrading an ASP.NET 5 RC1 app to ASP.NET Core 1. I have successfully upgraded it by replacing packages (AspNet to AspNetCore) and changing from EF7 to EF Core (Microsoft.Data.Entity to Microsoft.EntityFrameworkCore).

The issue I'm having is an intermittent SqlException for Connection Timeout Expired.

Here is the complete exception:

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;**   
  Source=.Net SqlClient Data Provider  
       at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)  

I have tried increasing the command timeout like so:

public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)

The exception is thrown on this line, but when I comment it out it will happen elsewhere which leads me to believe it happens the first time the database is accessed.

9/12/2016 5:47:35 PM

Accepted Answer

Your issue is related to the amount of time it takes for a connection to be established with the server. Altering the CommandTimeout value (the amount of time to allow a command to take to execute) will not have any effect on that. You need to consider increasing the connection timeout value, which is achieved via the connection string:

Server=(localdb)\mssqllocaldb;Database=yourDb;Trusted_connection=true;connect timeout=100;
9/13/2016 7:16:46 PM

Related Questions


Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow