1

我正在尝试通过 .Net 程序集与 Navision 进行 COM 互操作,特别是使用 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,Culture=neutral,PublicKeyToken=fbdb4bb4a7dccef2”或其中之一它的依赖项。系统找不到指定的文件。文件名:'Interop.MSXML2,Version=6.0.0.0,Culture=neutral,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
{
     ...
}

有什么线索吗?

4

2 回答 2

1

你有 GAC 的 MSXML6 上的互操作包装器吗?似乎 Fusion 无法加载程序集,并且要解决这个问题,您只需 GAC 即可。或者把它放在 Fusion 加载路径上。

但我不明白为什么需要 MSXML 才能向 SOAP Web 服务发出请求。为什么不直接使用.NET BCL 内置的WebClient广告XmlDocument ?

我从您上面写的内容中假设您想要构建一个 Navision“扩展”(可能不是正确的词)来连接到外部 Web 服务,它讲 XML,或者更具体地说,是 SOAP。并且还假设您可以在 .NET 中构建 Navision 扩展,但不能使用 wsdl.exe 或 svcutil.exe,这些工具用于 .NET 内置的 2 个 Web 服务堆栈。如果这是真的,为什么不使用 .NET 中可用的较低级别的 HTTP 和 XML 类呢?

您根本不需要 COM 互操作。

于 2009-05-29T16:53:51.690 回答
0

在我看来,您似乎想通过 SOAP Web 服务与 Navision 交谈。如果您想这样做,您应该使用 .NET 的 Web 服务设施,即 WCF(Windows Communication Foundation)。

于 2009-03-31T13:55:20.223 回答