救命了。。。
只是单纯的一个Ajax请求 ,查询数据库, 也没用什么事务 , 为了单纯找问题我把其他请求都注释掉了 , 也就是说项目一启动只会发起者一个请求,只会有这一个地方查询数据库,
我百度了很多帖子也跟着这些前辈们做了很多配置,但是还是没有解决掉。。我束手无策了..
豆子都给大家了
我自己没有写事务 分布式事务自己更没有写,经过两天的研究,终于发现问题根源了 ,我发现我们公司用的abp框架每个单元默认是一个事务,在ajax发起一个请求请求a方法(a 就是一个单元),在a里面调用了b方法和c方法,b方法是连接的Server1的db,c方法连接的是Server2的db,之前在调试的时候b方法没有问题也就没有打断点,直接调试到c方法(就是上面截图的)的时候就conn.open()报错,这时b和c都在a方法的单元里面,是同一个事务于是就形成了分布式事务,环境配置太多太复杂,正好框架也可以关闭一个单元的事物就解决了
用个ORM吧。。。还在自己写ado?
ado有ado的好处,orm是方便快捷 但是ado效率更高 更灵活
控制面板=》Windows防火墙=》允许应用或功能通过Windows防火墙=》允许其他应用=》选择路径【C:\Windows\System32】下的mstdc.exe程序
防火墙是直接关闭的呢
谢谢,这步操作我已经做过了 在服务器和本地都可以正常解析NetBIOS名称 DIC也是配置好了的
DTC
使用 TransactionScope 了吗?
如果想用事务还是 使用 SqlTransaction 事务吧,
TransactionScope 配置太多。
谢谢回复, 我刚入职公司,改别人写的Bug, 我自己没有写事务 分布式事务自己更没有写,经过两天的研究,终于发现问题根源了 ,我发现我们公司用的abp框架每个单元默认是一个事务,在ajax发起一个请求请求a方法(a 就是一个单元),在a里面调用了b方法和c方法,b方法是连接的Server1的db,c方法连接的是Server2的db,之前在调试的时候b方法没有问题也就没有打断点,直接调试到c方法(就是上面截图的)的时候就conn.open()报错,这时b和c都在a方法的单元里面,是同一个事务于是就形成了分布式事务,环境配置太多太复杂,正好框架也可以关闭一个单元的事物就解决了。
@Flers: 这种分布式事务的做法比较恶心,如果换环境上线部署的话也比较烦, 希望以后一切安好