Com Interop с MSXML

Я пытаюсь взаимодействовать с 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»). МЫЛЬНАЯ ПРОКСИ

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

[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
{
     ...
}

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


person Bent Rasmussen    schedule 31.03.2009    source источник
comment
Ваше имя пользователя бюстгальтер? как это круто? Вы знаете кого-нибудь по имени Питер Антиссен?   -  person Patrick McDonald    schedule 31.03.2009
comment
Это мой префикс электронной почты @ работа. Нет, не знаю этого чувака. Я знаю, что по-шведски лифчик хорош ;-) Чудо-бюстгальтер и что у тебя там!   -  person Bent Rasmussen    schedule 02.04.2009
comment
Возможно, эта статья MSDN может оказаться полезной, в ней описывается NAV/COM интероп.   -  person Alex Peck    schedule 09.07.2009


Ответы (2)


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

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

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

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

person Cheeso    schedule 29.05.2009

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

person EFrank    schedule 31.03.2009
comment
Все наоборот. Я хочу, чтобы Navision взаимодействовал с веб-службой SOAP. Вот почему я построил это. - person Bent Rasmussen; 31.03.2009
comment
И WCF, кстати, не вариант. WSDL.exe и SvcUtil.exe или несовместимы с рассматриваемым WSDL. - person Bent Rasmussen; 31.03.2009