NT4 マシンで .NET コンポーネントを実行しようとすると、多くの問題が発生します。Framework 1.1 がインストールされ、コンポーネントは同じフレームワークでコンパイルされます。
コンポーネントは、VB6 アプリケーションによって呼び出される Web サービスのプロキシです。残念ながら、VB6 アプリケーションはコンポーネントのインスタンスを作成できず、「ActiveX コンポーネントはオブジェクトを作成できません」というエラー メッセージを報告します。
プロキシのインスタンスを作成して GetStockQty を呼び出す単純な .NET コンソール テスト アプリケーションを作成しました。この場合、すべてが機能し、呼び出しは成功し、Web サービスは有効な数量を返します。
署名付きプロキシ コンポーネントには、次の COM 属性があります。
[ComVisible(true)]
[Guid("D1576FA8-F3B1-4fa2-8018-677F6E483564")]
public interface IDataFeedProxy
{
[DispId(1)]
bool GetStockQty(string sku, out int quantity);
}
[ComVisible(true)]
[Guid("161A22E8-17C4-43f4-96A0-05FC439C7609"),
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(IEvents))]
public class DataFeedProxy : IDataFeedProxy
以下を使用して NT4 マシンに登録されています。
regasm /codebase DataFeedWebService.dll /TLB
これは XP マシンでは問題なく動作しますが、これらの問題は NT4 マシンでのみ発生します。明らかにCOMに関連していますが、それが何であるかについては途方に暮れています。
編集
これは、VB6 コードでの実行方法です。
Dim oProxy As DataFeedWebService.DataFeedProxy
Set oProxy = New DataFeedWebService.DataFeedProxy
bRet = oProxy.GetStockQty(sPluCode, lQuantity)
Set oProxy = Nothing
また、VB6 プロジェクトから参照を削除し、同じ結果でレイト バインドを作成しようとしました。
Dim oProxy As Object
Set oProxy = CreateObject("DataFeedWebService.DataFeedProxy")