こんにちは。どうしても解決できない問題がありまして出てきました。お忙しいところ申し訳ありませんがお時間があったらご教授よろしくお願いします。
【問題】
.NET Framework 2.0においてASP.NETアプリを作成しております。このアプリは1.1から存在するものです。端的に申しますとActiveDsのCOMコンポーネント内にありますIADsUserの一つのプロパティの値を読もうとすると下記のようなエラーが発生します。1.1では発生していませんでしたが、2.0にしてから頻繁に発生するようになってしまいました。ちなみに開発環境は英語です。
COM object that has been separated from its underlying RCW cannot be used.
つまり実際のCOMオブジェクトがラッパーであるRuntime Callable Wrapperプロキシから切り離されてしまっていてRCWがCOMにアクセスできなくなってしまったということだと思うんです。
【コード】
Dim userObject As IADsUser = oDomainUtils.UserContainer(User.StaffLoginID, User.StaffDomain, False)
_AccountDisabled = userObject.AccountDisabled ' ここでエラーが起こります
【説明】
上のコードではoDomainUtils.UserContainerがFunctionでIADsUserを返します。IADsUserはActiveDs内のインターフェースです。そのFunctionは問題なくIADsUserを返してくれるのですがそのプロパティの一つであるAccountDisabledを読もうとすると上のエラーが発生します。しかしいつも発生するわけではなくアプリを最初に立ち上げたときによく発生するようなのです。それでもいつも発生するわけではありません。
【質問】
簡単に申し上げますとどうすればこのエラーをなくすことができるのかということが一つと、COMオブジェクトのアクセスするときにRCWが実際のCOMに参照をちゃんと保っているかどうかを確かめる方法ってありますでしょうか?よろしくお願いします。