C# 通过COM包装器从HTA使用WCF服务

C# 通过COM包装器从HTA使用WCF服务,c#,web-services,wcf,com,hta,C#,Web Services,Wcf,Com,Hta,正在寻找有关如何从HTA文件使用WCF服务库的帮助 基本概述-有一整套流程增强工具,以HTA文件的形式与预订系统集成 我们需要让系统使用X509证书作为安全签名与web服务通信 因此,我们构建了一个WCF类库,它使用对web服务的服务引用。在对app.config进行了一些调整和微调之后,我们已经实现了与web服务的完美通信(使用windows窗体测试应用程序) 为了能够通过HTA文件进行通信,我们编写了一个COM包装器,它公开了WCF库函数 到目前为止还不错-但是当我们尝试运行HTA时,我们得

正在寻找有关如何从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服务调用正常工作

非常感谢您的建议。 干杯
Darren

首先,尝试编译所有显式设置为目标的客户端.NET项目(包括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
)对其进行测试

我终于让它工作了

多亏了@Noseratio,他的建议迫使我重新审视了一切

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

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

干杯
达伦

谢谢你的帮助,但还是没有运气!所有东西都是以x86的形式构建的——因为我们必须与一些32位的古老API保持兼容!!尝试强制使用SysWOW64版本的mshta,但仍然没有成功:(@DarrenNavitas,很难猜出还有什么错误。您可能希望尝试将COM包装器设置为托管的进程外服务器,而不是进程内: