【问题标题】:Consuming WCF service from HTA via COM Wrapper通过 COM Wrapper 从 HTA 使用 WCF 服务
【发布时间】:2014-06-19 17:22:59
【问题描述】:

寻求有关如何使用 HTA 文件中的 WCF 服务库的帮助。

基本摘要 - 有一整套流程增强工具以 HTA 文件的形式与预订系统集成。

我们需要让系统与使用 X509 证书作为安全签名的 Web 服务进行通信。

因此,我们构建了一个 WCF 类库,它使用对 Web 服务的服务引用。在对 app.config 进行一些调整和微调之后 - 我们已经完美地与 Web 服务通信(使用 Windows 窗体测试应用程序)

因此,为了实现与 HTA 文件的通信,我们编写了一个 COM 包装器,它公开了 WCF 库函数。

到目前为止一切顺利 - 但是当我们尝试运行 HTA 时,我们得到了臭名昭著的

'找不到名称为........的端点元素'

我已经尝试了各种方法来尝试解决这个问题: 确保所有 dll 文件和 hta 文件都在同一目录中。 我已经从 WCF dll 复制了 app.config 并将其内容添加到 COM 包装器上的 app.config 文件中。 我什至尝试将配置文件添加到 System32 目录中的 MSHTA.exe 文件中!!

到目前为止,没有任何帮助并允许 HTA 文件让 WCF 服务调用正常工作。

非常感谢任何建议。 干杯 达伦

【问题讨论】:

    标签: c# web-services wcf com hta


    【解决方案1】:

    首先,尝试编译所有客户端 .NET 项目,并将 x86 明确设置为目标(包括 WCF 类库和 COM 包装器)。

    然后使用 x86 RegAsm.exe 注册您的 COM 包装器(即 C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe,而不是 x64 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe)。

    最后,使用 x86 mshta.exe(即 C:\Windows\SysWOW64\mshta.exe,而不是 x64 C:\Windows\System32\mshta.exe)对其进行测试。

    【讨论】:

    • 感谢您的帮助 - 但仍然没有运气!一切都已经构建为 x86 - 因为我们必须保持与一些古老的 32 位 API 的兼容!!尝试强制使用 SysWOW64 版本的 mshta - 但仍然没有运气:-(
    • @DarrenNavitas,很难猜测还有什么问题。您可能想尝试使您的 COM 包装器成为托管的进程外服务器,而不是进程内:stackoverflow.com/a/22674920/1768303
    【解决方案2】:

    终于搞定了!

    感谢@Noseratio,他的建议迫使我重新审视一切!

    是 mshta.exe 文件需要它自己的 app.config 文件。我已经尝试从 WCF DLL 复制 app.config 文件,但在将其命名为 mshta.config 而不是 mshta.exe.config 时出现了男生错误。

    一旦命名正确,HTA 文件就能够通过 com 包装器和 WCF DLL 与 Web 服务进行通信。

    干杯 达伦

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      相关资源
      最近更新 更多