• 关于TransactionScope出错:“与基础事务管理器的通信失败”的解决方法总结


    遇到此问题先需确认几个问题:

           1)MS DTC是否设置正确?

           2)是否启用了防火墙?是否对DTC做了例外?

           3)是否做了hosts映射?是否跨网域通信?

    开发分布式事务,碰到一个错误“与基础事务管理器的通信失败”,去百度了一下,发现问这个问题的人甚多,但是能解决的却很少了,而且所提供的方法无法解决问题。没有办法,我只有转移到Google去搜索E文的。最后发现了三篇“有里程碑性质的文章”:

           http://blog.darkthread.net/blogs/darkthreadtw/archive/2007/08.aspx

           http://blog.darkthread.net/blogs/darkthreadtw/archive/2007/03/15/629.aspx

           http://blog.darkthread.net/blogs/darkthreadtw/archive/2007/02/12/kb-msdtc-cross-different-domains.aspx

    1.错误描述:此错误一般就提示一句:

    中文就是:“与基础事务管理器的通信失败”

    E文就是:“Communication with the underlying transaction manager has failed”

    碰到此错误是极其郁闷的事情。明明MS DTC


       设置已经正确了啊!?

    2.错误排查:

    对你的目标DB(最少2台,多则不限)进行

    1.Telnet IP 135测试

    2.ping IP(DB的IP) 若是不通则不行

    3.反ping IP(应用的IP)        若是不通也不行

    4.查C:\WINDOWS\system32\drivers\etc\下hosts文件

    应用的SERVER做如下映射:  eg:  192.168.1.10 DB-Server-1

    DB的SERVER做如下映射:  eg:  192.168.1.50 App-Server-1

    说明:关于Microsoft提到更改注册表设置RPC端口,我不是很赞成。除非遇到了严格的网络环境,Server必须在Firewall下工作,且无法解除所有限制的情况,只有走此下策。具体的设置参看:http://support.microsoft.com/kb/154596/zh-cn

           5.错误到此一般都能解决,但是还有相当一部分还是没能解决。那为什么?就是要关注lmhosts文件了,看第3

    3.Lmhosts文件

           此文件也位于C:\WINDOWS\system32\drivers\etc\,但是可能会看到lmhosts.sam,没有关系,去掉扩展名,就成了lmhosts,然后做映射:

    应用的SERVER做如下映射:  eg:  192.168.1.10 DB-Server-1

    DB的SERVER做如下映射:  eg:  192.168.1.50 App-Server-1

           是的,和做hosts差不多。这个是解决RPC跨网域通信的问题。一般做了此步,问题基本都可解决

  • 相关阅读:
    base64加密/解密
    js split 的用法和定义 js split分割字符串成数组的实例代码
    js获取html5 audio 音频时长方法
    获取虾米音乐的歌词
    ajax请求QQ音乐
    MarkdownPad2.5 注册码
    neovim 使用
    tmux的使用方法和个性化配置
    linux 安装libevent
    boost.sha1
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1978468.html
Copyright © 2020-2023  润新知