Тайм-аут соединения не всегда работает с использованием Entity Framework - PullRequest
0 голосов
/ 19 сентября 2019

Я использую Entity Framework, и моя строка подключения выглядит примерно так -

Server=myServerAddress;Database=myDataBase;User Id=myUsername;
Password=myPassword;Connection Timeout=2

Я установил тайм-аут соединения как 2 секунды, и большую часть времени этот код работает, и я получаю ошибку в течение 2 секундесли соединение не работает.Но в редких случаях этот тайм-аут случается через 25-30 секунд, как вы можете видеть в журнале ниже, ошибка произошла через 23 секунды -

30 августа. 07:13:07 Начало сохранения.

30 августа, 07:13:30 Ошибка - при установлении соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром.Сервер не найден или не был доступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(провайдер: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server) - в System.Data.SqlClient.SqlInternalConnectionTds..ctor (идентификатор DbConnectionPoolIdentity, SqlConnectionString connectionOptions, SqlCredential учетные данные, объект providerInfo, новый пароль объекта String newPassSignSensePassSensePassPressPressSwordPwordSpaceSigningPassSignSwordPwordSpaceSigningPwordSwordSpaceSwordPressSwordSwordPressSwordSwordPwordSourcePwordSecwordSourcePwordSecureNecwordSourcePwordSecureNecwordSourcePwordSecureNecwordSourceNerwordSecureNecwordSourcePwordSecureNecwordSourcePwordSquePassNewSwordSword)))))., Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling, String accessToken)

Код написан примерно так: *

Log.Info("Save begins.")

try{
  Context.SaveChanges();
}
catch(
  Log.Info($"ERROR - + {ex.Message}-{ex.StackTrace}");
)

Log.Info("Save Ends.")

Причина, по которой я не могу найтиэтой задержки, как это бывает очень редко.Не могли бы вы помочь мне понять, что может быть причиной такого поведения?

1 Ответ

0 голосов
/ 19 сентября 2019

Попробуйте установить время ожидания подключения непосредственно к вашему классу DbContext при его создании.

var context = new Context("connection string");
(context as IObjectContextAdapter).ObjectContext.CommandTimeout = 2;

После этого повторите запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...