Возникло много проблем при попытке запустить компонент .NET на компьютере с NT4. Framework 1.1 установлен, и компонент скомпилирован под той же самой структурой.
Компонент является прокси для веб-службы, которая вызывается приложением VB6. К сожалению, приложение VB6 не может создать экземпляр компонента и сообщает следующее сообщение об ошибке «ActiveX компонент не может создать объект».
Я написал простое консольное тестовое приложение .NET, которое создает экземпляр прокси и вызывает GetStockQty. В этом случае все работает, вызов выполнен успешно, и веб-служба возвращает действительное количество.
Подписанный прокси-компонент имеет следующие атрибуты 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")