我把一个项目部署到服务器上,进行测试,结果SQL操作一直失败。之后查看了日志,发现以下异常:    System.AppDomainUnloadedException: Attempted to access an unloaded appdomain. (Exception from HRESULT: 0x80131014)
   at System.StubHelpers.StubHelpers.InternalGetCOMHRExceptionObject(Int32 hr, IntPtr pCPCMD, Object pThis)
   at System.StubHelpers.StubHelpers.GetCOMHRExceptionObject(Int32 hr, IntPtr pCPCMD, Object pThis)
   at System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte[] propgationToken, IntPtr managedIdentifier, Guid& transactionIdentifier, OletxTransactionIsolationLevel& isolationLevel, ITransactionShim& transactionShim)
   at System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken)
   at System.Transactions.TransactionStatePSPEOperation.PSPEPromote(InternalTransaction tx)
   at System.Transactions.TransactionStateDelegatedBase.EnterState(InternalTransaction tx)
   at System.Transactions.EnlistableStates.Promote(InternalTransaction tx)
   at System.Transactions.Transaction.Promote()
   at System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction transaction)
   at System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts)
   at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx)
   at System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction)
   at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()   请大家帮忙看看,是什么原因引起的,该怎么解决?   发布环境:   1. WEB站点和数据库分别在不同的服务器上
   2. 数据库事务使用的是TransactionScope(不知道是否有因果关系)   谢谢各位啦数据库异常exception

解决方案 »

  1.   

    本地调试没有出现错误。在测试环境里也没有出现问题。
    但和发布环境有一个根本区别,就是站点和数据库在同一个服务器上我贴上带事务执行数据库增删改操作的部分代码:// 打开数据库连接(含事务)
    public void OpenConnectionWithTransaction(IDAO dao)
    {
        AbstractDAO absDAO = (AbstractDAO)dao;
        absDAO.transScope = new TransactionScope();
        absDAO.OpenDBConn();
    }
    // 对外接口
    public int ExecuteNonQueryForTrans(IDAO dao, string sql, List<SqlParameter> sqlParams)
    {
        try
        {
            AbstractDAO absDAO = (AbstractDAO)dao;
            if (sqlParams == null)
            {
                sqlParams = new List<SqlParameter>();
            }
            return absDAO.NonQuery(sql, sqlParams);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }调用时:dao.OpenConnectionWithTransaction(dao)
    dao.ExecuteNonQueryForTrans(dao, sql, sqlParams)
      

  2.   

    没看出有什么问题,你的web连接语句呢
      

  3.   

    web连接语句?是连接字符串吗?
    下面是连接字符串:
    Data Source=xxx;Initial Catalog=xxx;User ID=xxx;Password=xxx;min pool size=1;max pool size=20;
      

  4.   

    连接字符串 加上auto-enlist=false 试试
    你用的是分布式事务吧...为什么要用分布式事务呢 
      

  5.   

    感谢各位的回复。
    目前和客户商讨后,将数据库服务器和WEB站点服务器合并了(估计是成本考虑)。所以一开始提到的那个问题就不存在了。不过在这过程中也试过各位说的方法,都没有解决问题。
    GOOGLE了一把,关于那个异常多是身份验证之类引起的,像由数据库连接引起的相关资料却是非常少。
    积分分摊给各位,谢谢各位了