代码之家  ›  专栏  ›  技术社区  ›  Piero Alberto

实体框架随机失败数据库访问

  •  0
  • Piero Alberto  · 技术社区  · 6 年前

    我正在使用实体框架处理我的数据库。 我创建了一个WCF服务,安装在IIS上。

    这个服务接收很多请求,每次都要更新数据库中的一些记录。有时,似乎是随机的,数据访问失败,并显示以下消息:

    打开时失败。--->System.Data.SqlClient.SqlException:Si¨ 验证是否存在错误,请参阅详细说明 cercava di Stabile una con con-SQL服务器。Il服务器非¨ sia corretto e che SQL Server sia配置 连接遥控器。(提供程序:SQL网络接口,错误:26)- Errore nell'individuazione del server/dell'istanza specifica)错误

    堆栈跟踪是

    在里面 标识,SqlConnectionString connectionOptions,SqlCredential 凭据,对象providerInfo,String newPassword,SecureString 用户连接选项,会话数据重新连接会话数据, DbConnectionPool池,字符串访问令牌,布尔值 sqlAuthProviderManager)

    在里面 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(数据库连接池 DbConnectionPoolKey poolKey,DbConnectionOptions用户选项)

    System.Data.ProviderBase.DbConnectionPool.CreateObject(数据库连接 旧连接)

    在里面 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(数据库连接 owningObject,DbConnectionOptions用户选项,DbConnectionInternal 旧连接)

    在里面 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(数据库连接 owningObject,UInt32 waitForMultipleObjectsTimeout,布尔型 用户选项,DbConnectionInternal&connection)

    在里面 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(数据库连接 owningObject,TaskCompletionSource`1重试,DbConnectionOptions

    在里面 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(数据库连接 用户选项,DbConnectionInternal oldConnection,DbConnectionInternal&

    在里面 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection TaskCompletionSource`1重试,DbConnectionOptions用户选项)

    在里面 重试)

    在里面 System.Data.SqlClient.SqlConnection.TryOpen(任务完成源`1 重试)

    在System.Data.SqlClient.SqlConnection.Open()中

    在里面 System.Data.Entity.Infrastructure.Interception.InternalDispatcher系统 1.Dispatch[TTarget,TInterceptionContext](TTarget target, Action 行动 3 executing, Action 3执行)

    System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(数据库连接 连接,dbinterceptoncontext interceptoncontext)

    在里面

    在里面 System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 操作)

    在System.Data.Entity.Core.EntityClient.EntityConnection.Open()中

    ---精美的della traccia dello stack Del'eccezione interna---

    在System.Data.Entity.Core.EntityClient.EntityConnection.Open()中

    在里面 System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection(布尔值 应监视传输)

    在里面 func,idExecutionStrategy执行策略,布尔值

    在里面 System.Data.Entity.Core.Objects.ObjectQuery`1.<>显示类7.b\u 5()

    System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 操作)

    在里面 System.Data.Entity.Core.Objects.ObjectQuery对象查询 1.GetResults(Nullable 1个 (前)

    在里面 System.Data.Entity.Core.Objects.ObjectQuery`1..GetEnumerator>b}u 0()

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

    在System.Linq.Enumerable.FirstOrDefault[TSource]中(IEnumerable`1 来源)

    在Myservice.UpdateState中(字符串ID,字符串codiceStato,字符串 info,Boolean 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文件中),并且大多数请求都成功,为什么有时此代码会抛出上面报告的异常?

    0 回复  |  直到 6 年前