【发布时间】:2012-03-08 21:25:09
【问题描述】:
我们在 .NET 4 项目中遇到 TransactionScope 问题。
我们已经将 DAL 分割成多个域,也就是说,我们有不同的 Linq2Sql DataContexts 指向同一个数据库。
当在同一个 TransactionScope 中,我们在多个 DataContext 上插入/更新时,就会出现问题,会立即在本地和服务器上弹出一个 msdtc 事务,然后它会在那里挂起 1-2 分钟(猜它超时),然后代码将继续运行,直到 t.Complete() 和随后隐含的 .Dispose 将产生和异常“事务已中止。”。
我们已在本地和服务器上配置 msdtc 以允许所有、无身份验证、完整跟踪级别,但 dtctrace.log 中仍然没有相关信息
我猜这是 msdtc 在启动多个数据库连接时启动的标准程序(即使它与同一个数据库),但为什么会超时?操作没有冲突,我们的域中不可能发生死锁?
已在 Google 上进行了广泛的搜索和测试,希望在这里获得一些经验丰富的经验 :)
【问题讨论】:
标签: c#-4.0