我有一个WinForms/WCF/SQLServer应用程序,在这里我尝试使用MSDTC事务,如下所示:
using System.Transactions;
// ...
var transOptions =
new TransactionOptions
{
IsolationLevel = IsolationLevel.ReadCommitted,
Timeout = TimeSpan.FromSeconds(120)
};
using (var scope = new TransactionScope(TransactionScopeOption.Required,
transOptions))
{
// ...
if (everything_is_ok)
scope.Complete();
}
在我的开发者身上框,其中服务器和客户端进程位于同一台计算机上,它可以正常工作。但是,当我部署到QA环境时,服务器和客户端位于单独的计算机上,每当调用
scope.Complete()
时,客户端就会挂起超时时间(2分钟),然后得到:是什么原因造成的?
最佳答案
我今天花了几个小时试图解决Windows 7下的这个问题。终于成功了,这是我所做的:
这也许不是最好的解决方案,但实际上是唯一对我而言有效的解决方案。
编辑:在Windows 7 SP1下MSDTC出现另一个问题后,我发现需要做两件事才能使其正常工作。
服务器。
“RestrictRemoteClients” = dword:00000000
“EnableAuthEpResolution” = dword:00000000