首页 新闻 赞助 找找看

分布式事务的问题

0
悬赏园豆:50 [已解决问题] 解决于 2011-07-20 14:46


“/”应用程序中的服务器错误。


由于通信问题,MSDTC 事务管理器无法从源事务管理器提取事务。可能原因如下: 存在防火墙并且没有 MSDTC 进程的例外、两台计算机根据其
NetBIOS 名称无法找到彼此,或未对于两个事务管理器之一启用网络事务支持。 (异常来自 HRESULT:0x8004D02B)

说明: 执行当前
Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息:
System.Runtime.InteropServices.COMException: 由于通信问题,MSDTC
事务管理器无法从源事务管理器提取事务。可能原因如下: 存在防火墙并且没有 MSDTC 进程的例外、两台计算机根据其 NetBIOS
名称无法找到彼此,或未对于两个事务管理器之一启用网络事务支持。 (异常来自 HRESULT:0x8004D02B)

源错误:






行 101:                var propertyInform = eoc.GetType().GetProperty(EDMAssisentment.CreateEntitySetName(typeof(TEntity)), BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);行 102:                var ret = (IQueryable<TEntity>)propertyInform.GetValue(eoc, null);行 103:                return ret.Where(whereExpression).FirstOrDefault();行 104:            }行 105:        }


源文件:
F:\work\DEV\Development\trunck\Code\Framework\EntityInfrastructure\EntityBaseContext.ReadOnly.cs
   行:
103

堆栈跟踪:





[COMException (0x8004d02b): 由于通信问题,MSDTC 事务管理器无法从源事务管理器提取事务。可能原因如下: 存在防火墙并且没有 MSDTC 进程的例外、两台计算机根据其 NetBIOS 名称无法找到彼此,或未对于两个事务管理器之一启用网络事务支持。 (异常来自 HRESULT:0x8004D02B)]   System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte[] propgationToken, IntPtr managedIdentifier, Guid& transactionIdentifier, OletxTransactionIsolationLevel& isolationLevel, ITransactionShim& transactionShim) +0   System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken) +216[TransactionManagerCommunicationException: 与基础事务管理器的通信失败。]   System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken) +331   System.Transactions.TransactionStatePSPEOperation.PSPEPromote(InternalTransaction tx) +78   System.Transactions.TransactionStateDelegatedBase.EnterState(InternalTransaction tx) +177   System.Transactions.EnlistableStates.Promote(InternalTransaction tx) +15   System.Transactions.Transaction.Promote() +61   System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction transaction) +46   System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts) +193   System.Data.SqlClient.SqlInternalConnection.GetTransactionCookie(Transaction transaction, Byte[] whereAbouts) +35   System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx) +450   System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx) +4848546   System.Data.SqlClient.SqlInternalConnectionTds.Activate(Transaction transaction) +4848605   System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction) +33   System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +1286   System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +65   System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117   System.Data.SqlClient.SqlConnection.Open() +122   System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) +47[EntityException: 基础提供程序在 Open 上失败。]   System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) +168   System.Data.EntityClient.EntityConnection.Open() +96   System.Data.Objects.ObjectContext.EnsureConnection() +81   System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) +46   System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +44   System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source) +203   System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1(IEnumerable`1 sequence) +40   System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable`1 query, Expression queryRoot) +59   System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(Expression expression) +109   System.Linq.Queryable.FirstOrDefault(IQueryable`1 source) +269   YSGame.Platform.Framework.EntityInfrastructure.EntityBaseContext`2.Find(Expression`1 whereExpression) in F:\work\DEV\Development\trunck\Code\Framework\EntityInfrastructure\EntityBaseContext.ReadOnly.cs:103   YSGame.Platform.PersistentLayer.PassportPersistent.UserPersistent.Find(String accountName) in F:\work\DEV\Development\trunck\Code\PersistentLayer\PassportPersistent\UserPersistent.cs:83   YSGame.Platform.BizLogic.PassportBiz.AccountManagement.UserLogin(String userName, String passWord, String ip) in F:\work\DEV\Development\trunck\Code\BizLogic\PassportBiz\AccountManagement.cs:80   YSGame.Platform.BizLogic.PassportBiz.AccountManagement.UserLogin(String userName, String passWord) in F:\work\DEV\Development\trunck\Code\BizLogic\PassportBiz\AccountManagement.cs:71   YSGame.Presentation.UserControls.YSAccountLogin.btnLogin_Click(Object sender, EventArgs e) in F:\work\DEV\Development\trunck\Code\Presentation\StoreFront\WebSite\UserControls\YSAccountLogin.cs:267   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565





版本信息: Microsoft .NET Framework 版本:2.0.50727.4959; ASP.NET
版本:2.0.50727.4955

问题补充:

数据库在另一台计算机,启用了分布式事务,客户端计算机加入了域,数据库服务器没有加入域

IT Giant的主页 IT Giant | 初学一级 | 园豆:7
提问于:2011-07-19 11:24
< >
分享
最佳答案
1

楼主可以试一下在C:\WINDOWS\system32\drivers\etc\hosts文件中分别加入DB客户端和DB服务器的机器名和IP地址的映射关系。

收获园豆:50
刘鸿海 | 小虾三级 |园豆:655 | 2011-07-19 16:39
其他回答(2)
0

我也遇到了这个问题?请问你是怎么解决的?

(二少)在南极 | 园豆:210 (菜鸟二级) | 2012-03-02 14:19
0

我没有域 都在同一个局域网 防火墙 组件服务 按照网上说的 都设置 本机就没问题

怎么解决的呢?

軒轅劍 | 园豆:64 (初学一级) | 2013-01-15 13:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册