Платформа сущностей случайным образом отказывает в доступе к базе данных - PullRequest
0 голосов
/ 05 ноября 2018

Я использую Entity Framework для работы с моей базой данных. Я создал службу WCF, установленную на IIS.

Эта служба получает много запросов, и каждый раз ей приходится обновлять некоторые записи в базе данных. Иногда, кажется случайным, сбой доступа к данным, с этим сообщением:

System.Data.Entity.Core.EntityException: основной поставщик не удалось открыть. ---> System.Data.SqlClient.SqlException: Si è проверка правдоподобности конкретных действий Стабильность и безопасность при работе с SQL Server. Il server non è stato trovato o non è accessibile. Verificare che il nome dell'istanza Внедрение SQL Server и конфигурирование в режиме реального времени. Connessioni пульт. (поставщик: сетевые интерфейсы SQL, ошибка: 26 - Ошибка сервера / спецификаций клиента)

Трассировка стека

в System.Data.SqlClient.SqlInternalConnectionTds..ctor (DbConnectionPoolIdentity идентичность, SqlConnectionString connectionOptions, SqlCredential учетные данные, Object providerInfo, String newPassword, SecureString newSecurePassword, логическое перенаправленноеUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)

в System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection (DbConnectionPool пул, параметры DbConnection owningObject, DbConnectionOptions, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)

в System.Data.ProviderBase.DbConnectionPool.CreateObject (DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)

в System.Data.ProviderBase.DbConnectionPool.UserCreateRequest (DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)

в System.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal & connection)

в System.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal & connection)

в System.Data.ProviderBase.DbConnectionFactory.TryGetConnection (DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal & подключение)

в System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal (DbConnection externalConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 повтор, DbConnectionOptions userOptions)

в System.Data.SqlClient.SqlConnection.TryOpenInner (TaskCompletionSource`1 повторить)

в System.Data.SqlClient.SqlConnection.TryOpen (TaskCompletionSource`1 повторить)

в System.Data.SqlClient.SqlConnection.Open ()

в System.Data.Entity.Infrastructure.Interception.InternalDispatcher 1.Dispatch[TTarget,TInterceptionContext](TTarget target, Action 2 операция, TInterceptionContext interceptionContext, Действие 3 executing, Action 3 выполнено)

в System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open (DbConnection соединение, DbInterceptionContext interceptionContext)

в System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy. <> C__DisplayClass1.b__0 ()

в System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute [TResult] (Func`1 работа)

в System.Data.Entity.Core.EntityClient.EntityConnection.Open ()

--- Fine della traccia dello stack dell'eccezione interna ---

в System.Data.Entity.Core.EntityClient.EntityConnection.Open ()

в System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection (Boolean shouldMonitorTransactions)

в System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction [Т] (Func`1 func, IDbExecutionStrategy executeStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)

в System.Data.Entity.Core.Objects.ObjectQuery`1. <> C__DisplayClass7.b__5 ()

в System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute [TResult] (Func`1 работа)

в System.Data.Entity.Core.Objects.ObjectQuery 1.GetResults(Nullable 1 forMergeOption)

в System.Data.Entity.Core.Objects.ObjectQuery`1..GetEnumerator> b__0 ()

в System.Data.Entity.Internal.LazyEnumerator`1.MoveNext ()

в System.Linq.Enumerable.FirstOrDefault [TSource] (IEnumerable`1 источник)

в Myservice.UpdateState (идентификатор строки, строка codiceStato, строка информация, логическое inviaEmail, String dal) в C: \ MyService.svc.cs: riga 52

Кодовая строка 52, записанная в трассировке стека:

using (var db = new Entities())
{
    var f = db.Table.FirstOrDefault(x => x.ID == ID);  //this line throws the error
    ...

Поскольку строка подключения всегда одна и та же (в файле web.config) и большая часть запроса выполняется успешно, почему иногда этот код вызывает исключение, указанное выше?

Любые предложения приветствуются, я не знаю, в чем здесь проблема.

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