2009-03-31 6 views
1

Я пытаюсь объединить COM-интерфейс с Navision через сборку .Net и, в частности, использовать интерфейсы MSXML. Это приводит к следующему сообщению об ошибке:Com Interop w/MSXML

Сборка «C: \ Users \ bra \ Documents \ Visual Studio 2008 \ Projects \ SOAPROXY \ SOAPROXY \ bin \ Release \ SOAPROXY.dll" не может быть преобразована в библиотеку типов , У экспортера библиотеки типов возникла ошибка при обработке «SOAPROXY.ISoap.PostEnvelope (# 0), SOAPROXY». Ошибка: Тип библиотеки exporter не может загрузить тип «MSXML2.IXMLDOMDocument» (ошибка: System.IO.FileNotFoundException: не удалось загрузить файл или сборку «Interop.MSXML2, версия = 6.0.0.0, Culture = neutral, PublicKeyToken = fbdb4bb4a7dccef2» или один из его зависимости. Система не может найти указанный файл. Имя файла: 'Interop.MSXML2, Version = 6.0.0.0, Culture = neutral, PublicKeyToken = fbdb4bb4a7dccef2'). SOAPROXY

Базовый интерфейс определен как

[Guid("some guid")] 
[ComVisible(true)] 
public interface ISoap 
{ 
    IStatus State { get; } 

    IXMLDOMDocument PostEnvelope(IXMLDOMDocument envelope, string action, string endpoint, string print, string store, string location); 
} 

[ClassInterface(ClassInterfaceType.None)] 
[ComVisible(true)] 
public class Soap : ISoap 
{ 
    ... 
} 

Любые подсказки?

+0

Ваше имя пользователя: лифчик? как это круто? Вы знаете кого-нибудь по имени Питер Антессен? –

+0

Это мой префикс @ @. Нет, не знаю этого чувака. Я знаю, что лифчик хорош на шведском языке ;-) Wonder-bra и что у вас есть! –

+0

Возможно, [это] (http://msdn.microsoft.com/en-us/library/aa973247.aspx) Статья MSDN может быть полезной, она описывает взаимодействие NAV/COM. –

ответ

0

Мне кажется, что вы хотите поговорить с Navision через веб-службы SOAP. Если вы хотите это сделать, вы должны использовать возможности .NET для веб-сервисов, а именно WCF (Windows Communication Foundation).

+0

Это наоборот. Я хочу, чтобы Navision разговаривала с веб-службой SOAP. Вот почему я построил это. –

+0

И WCF, кстати, не вариант. WSDL.exe и SvcUtil.exe или несовместимы с WSDL. –

1

У вас GAC''с оболочка Interop на MSXML6? Похоже, что Fusion не загружает сборку, и решить, что вы просто GAC это. Или поставьте его на путь загрузки Fusion.

Но я не понимаю, зачем вам нужен MSXML, чтобы сделать запрос к веб-службе SOAP. Почему бы просто не использовать объявление WebClientXmlDocument, встроенное в .NET BCL?

Я предполагаю, что из того, что вы написали выше, вы хотите построить «расширение» Navision (возможно, не правильное слово) для подключения к внешней веб-службе, которая говорит XML или, более конкретно, SOAP. А также предположим, что вы можете построить расширение Navision в .NET, но вы не можете использовать wsdl.exe или svcutil.exe, инструменты для 2 стеков веб-сервисов, встроенные в .NET. Если это так, почему бы не использовать низкоуровневые классы HTTP и XML, доступные в .NET?

Вам не понадобится COM-взаимодействие вообще.