代码之家  ›  专栏  ›  技术社区  ›  Brainchild

其中MSDTC需要安装在分布式事务案例中

  •  2
  • Brainchild  · 技术社区  · 16 年前

    假设Service1安装在Server1上

    [ServiceContract]
    IService1
    {
        [OperationContract]
        Operation1();
    }
    

    Service2安装在Server2上

    [ServiceContract]
    IService2
    {
        [OperationContract]
        Operation2();
    }
    

    客户端正在使用这两种服务

    using (TransactionScope ts = new TransactionScope())
    {
        Service1Proxy.Operation1();
        Service2Proxy.Operation2();
    }
    

    我应该在哪里安装MSDTC,它需要安装在哪里

    在这种情况下是否需要任何额外的配置?

    2 回复  |  直到 16 年前
        1
  •  1
  •   pdiddy    16 年前

    您必须在客户端和服务器1、服务器2上启用MSDTC。

    您应该允许在客户端的MSDTC安全配置中进行出站。


    我在使用MSDTC时遇到的一个问题是,不要忘记在防火墙的异常列表中允许MSDTC。

    查看代码片段,还需要在操作界面上添加Transactionflow属性。

    Foundation: Transaction Propagation

        2
  •  0
  •   Vivian River    16 年前

    粗略的谷歌搜索在MSDN上找到了以下文档: http://msdn.microsoft.com/en-us/magazine/cc163432.aspx . 本文档说明您需要在服务接口上使用特殊属性,以使TransactionScope跨越服务边界。

    至于“安装”MSDTC,您不需要安装它。它应该已经是Windows安装的一部分。但是,默认情况下,MSDTC不能与网络上的远程客户端一起工作;此设置用于安全目的。以下链接显示了如何在Windows Server 2003中使MSDTC与远程客户端协同工作: http://support.microsoft.com/kb/817064 . 对于其他版本的Windows,请尝试通过谷歌搜索“MSDTC网络访问”。我相信您需要在每个托管服务的服务器上设置此配置,以便在远程事务中包含该服务。

    推荐文章