3

Я работаю над обновлением приложения ASP.NET 5 RC1 для ядра ASP.NET 1. Я успешно обновил его, заменив пакеты (AspNet на AspNetCore) и изменив их с EF7 на EF Core (Microsoft.Data.Entity для Microsoft.EntityFrameworkCore).ASP.NET Core SQL Connection TImeout

Проблема, с которой я сталкиваюсь, представляет собой прерывистое исключение 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(); 
+0

Теперь нет вопроса или что? после этого 'this.Database.SetCommandTimeout (120);' – Sampath

+0

Проблема все еще происходит даже после добавления тайм-аута. –

ответ

0

Ваша проблема связана с количеством времени, которое требуется для установления соединения с сервером. Изменение значения CommandTimeout (количество времени, которое требуется выполнить команде для выполнения), не повлияет на это. Вы должны рассмотреть вопрос об увеличении соединения тайм-аут значение, которое достигается с помощью строки соединения:

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

Знаете ли вы, почему я не сталкивался с этим до обновления до Core 1.0? –

+0

Это не имеет ничего общего с версиями Entity Framework. Проблема связана исключительно с оперативностью вашего SQL Server. LocalDb вращается по требованию. Я не знаю, какие факторы могут повлиять на его количество времени, которое требуется LocalDb, чтобы подготовиться, но версия EF или .NET, которую вы используете, вряд ли будет одной из них. –