サービス参照を保持する ComVisible .Net (C#) dll を作成しました。外部 COM クライアント (VBScript) から dll にアクセスしようとすると、オブジェクトを作成するたびに例外がスローされます。
スローされる例外は InvalidOperationException (0x80131509) です。
簡単な調査の後、サービス参照オブジェクトの作成(「新規」化)で失敗することに気付きました。
- 以下のコードで使用されるサービス参照オブジェクトの名前は次のとおりです。
ServiceClient
ServiceClient
C# dll のプライベートです- コンストラクターで参照を作成しようとしても失敗します
- クラスまたはコンストラクターの両方から「new」キーワードを削除すると、コードが通過します。
- サービスは稼働中です
dll コード:
namespace UIIdentifier.Updater
{
[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class Client
{
[ComVisible(false)]
//<<--This throws the exception -->>
private ServiceClient uiSpySrv = new ServiceClient();
[ComVisible(true)]
public string hello()
{
return "hello";
}
}
}
クライアントコード:
Dim oUpdater
Set oUpdater = CreateObject("UIIdentifier.Updater.Client")
MsgBox oUpdater.hello
なぜこれが起こるのか?