關於TransactionScope出錯:“與基礎事務管理器的通信失敗”的解決方法

異常信息:

System.Transactions.TransactionManagerCommunicationException: 與基礎事務管理器的通信失敗。 ---> System.Runtime.InteropServices.COMException: 由於通信問題,MSDTC 事務管理器無法從源事務管理器提取事務。可能原因如下: 存在防火牆並且沒有 MSDTC 進程的例外、兩臺計算機根據其 NetBIOS 名稱無法找到彼此,或未對於兩個事務管理器之一啓用網絡事務支持。 (異常來自 HRESULT:0x8004D02B)

解決辦法:

一、對雙方MSDTC組件設置
步驟:
1.控制面板->管理工具->組件服務->計算機->我的電腦->右鍵->屬性

  1. 選擇MSDTC頁, 確認"使用本地協調器"
    3.點擊下方"安全配置"按鈕
  2. 勾選: "允許網絡訪問","允許遠程客戶端","允許入站","允許出站","不要求進行身份驗證".
  3. 對於數據庫服務器端, 可選擇"要求對呼叫方驗證"
    停止分佈式事務協調器服務,然後重新予以啓動。
    停止參與分佈式事務的任何資源管理器服務(如 Microsoft SQL Server 或 Microsoft Message Queue Server),然後重新予以啓動。
    6.在雙方防火牆中增加MSDTC.exe例外,可用命令行: netsh firewall set allowedprogram %windir%\system32\msdtc.exe MSDTC enable
    7.dtC用到remoting的135端口,確保防火牆沒有阻止

二、在數據庫服務器(MSSQL)上的 hosts 文件中加入 Web 服務器(IIS) 的 IP 和 主機名 映射對
1.定位到 C:\WINDOWS\system32\drivers\etc 目錄
2.記事本打開 hosts 文件(沒有擴展名)
3.添加一行 Web 服務器 IP 和 主機名映射, 如:
192.168.20.151 mes-PC
192.168.20.152 DESKTOP-Q8BM9T7

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章