@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

.Netにおける分散トランザクションの利用について

1
投稿者投稿内容
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2005-11-15 13:51
現在.Netフレームワーク1.1とWindowsXP(SP2)で複数のSQLServerに大して更新処理を行うプログラムを作成しています。
要件として分散トランザクションを利用し2層コミットを行う必要があるのですが、MSDNなどを参照し実装をしてみたのですが下記の例外が発生し動作させることができません。
コード:
ハンドルされていない例外: System.Runtime.InteropServices.COMException (0x8004E004): There is no MTS context available.
   場所 System.EnterpriseServices.ContextUtil.get_ObjectContext()
   場所 System.EnterpriseServices.ContextUtil.get_Transaction()
   場所 DTCApplication.DTCClass.load() 場所 C:\Documents and Settings\yukiosa\My Documents\Visual Studio 2005\Projects\DTCApplication\DTCApp
lication\DTCClass.cs:行 13
   場所 DTCApplication.Program.Main(String[] args) 場所 C:\Documents and Settings\yukiosa\My Documents\Visual Studio 2005\Projects\DTCApplic
ation\DTCApplication\Program.cs:行 9


サンプルコード:
コード:
namespace DTCApplication {
    [Transaction]
    public class DTCClass {
        public DTCClass() {
        }
        [AutoComplete]
        public void load() {
            ITransaction transaction = (ITransaction) ContextUtil.Transaction;
        }
    }
    class Program {
        static void Main(string[] args) {
            DTCClass dtc = new DTCClass();
            dtc.load();
        }
    }
}


例外を読む限りMTSを利用しないと利用できないようなのですが、これが原因なのでしょうか?
そしてどのようにすれば開発できるようになるのでしょうか?
よろしくお願いします。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2005-11-15 16:02
自己解決しました。
ServicedComponentのサブクラスにするのを忘れていました。
1

スキルアップ/キャリアアップ(JOB@IT)