Com Interop с MSXML - PullRequest
       31

Com Interop с MSXML

1 голос
/ 31 марта 2009

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

Сборка "C: \ Users \ bra \ Documents \ Visual Studio 2008 \ Projects \ SOAPROXY \ SOAPROXY \ bin \ Release \ SOAPROXY.dll" не может быть преобразована в библиотеку типов. Экспортер библиотеки типов обнаружил ошибку при обработке 'SOAPROXY.ISoap.PostEnvelope (# 0), SOAPROXY'. Ошибка: экспортер библиотеки типов не может загрузить тип 'MSXML2.IXMLDOMDocument' (ошибка: System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'Interop.MSXML2, версия = 6.0.0.0, культура = нейтральная, PublicKeyToken = fbdb4bb4a7dccef2' или один из его зависимости. Система не может найти указанный файл. Имя файла: 'Interop.MSXML2, версия = 6.0.0.0, культура = нейтральная, 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
{
     ...
}

Есть какие-нибудь подсказки?

Ответы [ 2 ]

1 голос
/ 29 мая 2009

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

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

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

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

0 голосов
/ 31 марта 2009

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

...