В моем классе C # есть следующий код, который удаленно подключается к серверу COM + на удаленной машине.
Изначально это было с ошибкой на Activator.CreateInstance
, так как у меня не было пользователя на сервере COM +, который был бы тем же, что и пользователь, запускающий клиент.
Я установил заглушки прокси COM + на моем клиентском компьютере и импортировал их в мой проект C #.
В файле IDL есть только одно определение интерфейса, _ AddressLookup
, которое наследуется от IDispatch
, но в средстве просмотра объектов в C # я, кажется, получаю два интерфейса, _ AddressLookup
и AddressLookup
.
private string CreateEarly(string server)
{
try
{
Type typeADLClass = typeof(LookupBusiness.AddressLookupClass);
Type typeDCOM = Type.GetTypeFromCLSID(typeADLClass.GUID,
server,
true);
object objAdd = Activator.CreateInstance(typeDCOM);
AddressLookupClass AddressLookupClass_result = (AddressLookupClass) Marshal.CreateWrapperOfType(objAdd, typeADLClass);
}
catch(Exception e)
{
return e.Message;
}
return "Create - success";
}
Когда я запускаю этот код, я получаю:
Исходный объект не может быть преобразован в тип назначения, так как он
не поддерживает все необходимые интерфейсы.
Если я попытаюсь использовать позднее связывание:
object[] myArguments= {"www.zenei.co.uk", "39"};
object c;
c = typeDCOM.InvokeMember("Gett", BindingFlags.InvokeMethod, null, objAdd, myArguments);
Я получаю Интерфейс не поддерживает IDispatch
.
Может кто-нибудь помочь?