我正在使用Entity Framework处理我的数据库。 我创建了一个WCF服务,安装在IIS上。
此服务收到许多请求,并且每次必须更新数据库中的某些记录。有时,似乎随机出现数据访问失败,并显示以下消息:
System.Data.Entity.Core.EntityException:基础提供程序 打开失败。 ---> System.Data.SqlClient.SqlException:是 特定错误的验证 稳定连接SQL Server的功能。非Il服务器 不可访问的状态。 Verificare che il nome dell'istanza SQL Server sia configurato(以协议形式) connessioni远程。 (提供者:SQL网络接口,错误:26- 服务器错误/ dell'istanza规范错误
堆栈跟踪为
在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity 身份,SqlConnectionString connectionOptions,SqlCredential 凭证,对象providerInfo,字符串newPassword,SecureString newSecurePassword,布尔型redirectedUserInstance,SqlConnectionString userConnectionOptions,SessionData reconnectSessionData, DbConnectionPool池,字符串accessToken,布尔值 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,布尔值 allowCreate,仅布尔值OneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal&连接)
在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,TaskCompletionSource`1重试,DbConnectionOptions userOptions,DbConnectionInternal&连接)
在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection,TaskCompletionSource`1重试,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拦截上下文, 操作3 executing, Action
3已执行)在 System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(DbConnection 连接,DbInterceptionContext拦截上下文)
在 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()
中---精美的della traccia dello stack国际戴尔---
在System.Data.Entity.Core.EntityClient.EntityConnection.Open()
中在 System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection(布尔 shouldMonitorTransactions)
在 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction [T](Func`1 func,IDbExecutionStrategy执行策略,布尔 startLocalTransaction,布尔型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中(字符串ID,字符串codiceStato,字符串 info:C:\ MyService.svc.cs:riga 52中的布尔inviaEmail,字符串dal)
写在堆栈跟踪中的代码行52是:
using (var db = new Entities())
{
var f = db.Table.FirstOrDefault(x => x.ID == ID); //this line throws the error
...
由于连接字符串始终相同(在web.config文件中),并且大多数请求都成功,所以为什么有时这段代码会抛出上面报告的异常?
任何建议都会受到赞赏,我不知道这里出了什么问题。