WCF分佈式事務對Binding有要求,不支持BasicHttpBinding,BasicHttpContextBinding,NetPeerTcpBinding

要支持分佈式事務,需要進行以下配置:

服務端設置

首先要在綁定配置中啓用transactionFlow:

<binding transactionFlow="true" />

其次要在契約接口方法上添加TransactionFlow特性:

[TransactionFlow(TransactionFlowOption.Allowed)]

然後要在契約實現方法上添加TransactionScopeRequired特性:

[OperationBehavior(TransactionScopeRequired = true)]

Windows設置

在所有參與事務的電腦上,配置MSDTC以啓用遠程訪問。在組件服務中配置Local DTC如下:

WCF分佈式事務支持-LMLPHP

并配置防火墻以允許DTC通過

WCF分佈式事務支持-LMLPHP

由於改變了Windows設置,最好重啓一下電腦

最後客戶端將事務放進一個TransactionScope中進行調用就可以了。

05-08 08:00