2010-11-05 4 views
2

У меня CLSID, и мне нужно создать его на другом сервере (например, DCS), где моя рабочая машина (т. Е. MWS).Как вызвать объект DCOM с C#?

Теперь, если я использую следующее:

var type = Type.GetTypeFromCLSID(new Guid(CLSID), 
     Environment.MachineName, true); 
var COMObject = Activator.CreateInstance(type); 
var returnValue = COMObject.GetType().InvokeMember(methodName, 
         flags, null, COMObject, args, argModifiers, null, null); 

Тогда я получаю "COM цель не реализует IDispatch" ошибку. Хорошо, я понимаю, что, вероятно, целевой объект COM не имеет IDispatch, поэтому он терпит неудачу.

Теперь попробовал что-то еще. Если я добавлю ссылку на эту COM-DLL в VS, тогда VS сгенерирует сборки interop, а затем все будет работать как обычное создание объекта .net, но в этом случае объект фактически генерирует в моем локальная машина (MWS pc) не на сервере, что я хочу.

Ребята любое предложение, как я могу справиться с этой ситуацией?

Заранее спасибо.

+0

Вы разрешили это? – Mihailo

+0

Да, экспорт в msi решил проблему. – Moim

ответ

3

Вы можете экспортировать свой COM + с целевой машины в качестве прокси-сервера и установить его на свой компьютер, на котором запущено приложение.

Перейдите в консоль компонентов на своей целевой машине, щелкните правой кнопкой мыши на своем приложении COM + и выберите «Экспорт» ... Затем выберите «Радиоприемник прокси-сервера». Это будет экспортировать прокси-сервер в это приложение COM + в виде файла MSI. Вам нужно установить его на свой компьютер вместо реального приложения COM + (это означает его удаление, если оно установлено там), а затем попробуйте ваш interop.