Невозможно создать компонент .NET Framework 1.1 из приложения VB6 на компьютере с NT4 - PullRequest
1 голос
/ 14 марта 2011

Возникло много проблем при попытке запустить компонент .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")

1 Ответ

0 голосов
/ 14 марта 2011

Вы уверены, что компонент .net будет работать на Windows NT4.0. Я помню, что это было возможно, но было много операций, которые не были поддержаны.

...