尝试在 NT4 机器上运行 .NET 组件时遇到很多问题。安装Framework 1.1,并在同一框架下编译组件。
该组件是由 VB6 应用程序调用的 Web 服务的代理。不幸的是,VB6 应用程序无法创建组件的实例并报告以下错误消息“ActiveX 组件无法创建对象”。
我编写了一个简单的 .NET 控制台测试应用程序,它创建代理实例并调用 GetStockQty。在这种情况下,一切正常,调用成功并且 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
Ive 还尝试从 VB6 项目中删除引用并创建它的后期绑定,结果相同。
Dim oProxy As Object
Set oProxy = CreateObject("DataFeedWebService.DataFeedProxy")