2015年8月27日木曜日

MSDTCでトランザクション処理の設定

WCF net.tcpで、TransactionScopeを利用してトランザクション処理を行った。

ローカル開発環境(WcfSvcHost.exeでのホスト)では正常に処理されるが、
別サーバーのIISでホストさせ、クライアントからアクセスすると、以下のエラーが発生した。

System.ServiceModel.ProtocolException:フローされたトランザクションのマーシャリングを解除できませんでした。次の例外が発生しました:パートナートランザクションマネージャにより、リモートトランザクションまたはネットワークトランザクションのサポートが無効にされました。(HRESULTからの例外: 0x8004D025)

これを回避するには、サーバー、クライアント両方のDistributed Transaction Coodinatorの設定を変更しないといけない。

・dcomcnfg > コンポーネントサービス > マイコンピューター > Distributed Transaction Coodinator > ローカルDTC > プロパティ > セキュリティタブを開く。

・ネットワークDTCアクセスをON
・トランザクションマネージャー通信(受信を許可、送信を許可)をON

これで適用する。

そして、Windowsファイアウォールの詳細設定で以下を有効にする。

<受信の規則>
・分散トランザクションコーディネーター(RPC)
・分散トランザクションコーディネーター(RPC-EPMAP)
・分散トランザクションコーディネーター(TCP受信)

<送信の規則>
分散トランザクションコーディネーター(TCP送信)

2015年8月18日火曜日

WCF構成エディタの場所

【.Net3.5】
c:/Program Files/Microsoft SDKs/Windows/v7.0A/bin

【.Net4.0】
c:/Program Files/Microsoft SDKs/Windows/v7.0/bin/NETFX 4.0 Tools

SrvConfigEditor.exe