当我使用TransactionScope
时遇到此问题,我想仅禁止此错误,并且不想进行任何配置(设置)。
错误讯息:
分布式事务管理器(MSDTC)的网络访问已经完成 禁用。请在安全性中启用DTC以进行网络访问 使用组件服务管理的MSDTC配置 工具。
错误行:
_cacheLogic.UpdateCache<List<CustomEntity>>(Detail, CacheConstants.RM_CACHE_GET_DETAIL, cacheKey);
答案 0 :(得分:0)
如果你想使用TransactionScope
,那么压制错误是不够的。
要在代码中使用TransactionScope
,您需要从服务器上的Microsoft Distributed Transactions Coordinator (MSDTC)
启用Component Services
。
以下是启用它的详细步骤:http://pongsathonkeng.blogspot.in/2011/02/msdtc-setup.html
此外,该错误还表明需要向MSDTC提供某些与网络相关的访问。为此,您可以查看上面链接中的第2步。
此外,here是一种工具,可让您在之后测试设置。
答案 1 :(得分:0)
因此,您在一个事务范围内使用多个数据源。发生这种情况时,应该发生分布式事务,并且在您的情况下,分布式事务管理器未正确配置。正如我从您的问题中所理解的那样,您并不想解决这个问题,也不需要进行分布式交易。然后,您需要更改代码,以便在同一TransactionScope下不再使用多个数据库。假设你有类似的东西:
using (var transaction = new TransactionScope()) {
var data = SelectSomeDataFromDatabaseA();
if (data.IsFine) {
InsertSomeDataInDatabaseB();
}
transaction.Complete();
}
在这里,您正在使用一个事务范围内的数据库A和B,但您并不需要这样做 - 只需从事务范围外的数据库A中移动代码选择数据库。
另请注意,在某些情况下,即使您使用相同的数据库,也可能会启动分发事务 - 如果您使用不同的使用相同的数据库,则可能会发生这种情况连接。如果是这种情况 - 避免创建多个连接,而是将相同的连接实例传递给您需要的所有方法。