【问题标题】:VB6 calling WCF: Could not find endpoint elementVB6 调用 WCF:找不到端点元素
【发布时间】:2016-07-15 00:25:23
【问题描述】:

我有一个旧版 VB6 应用程序,它需要调用 .Net .dll 才能调用 WCF Web 服务。

起初,我收到了这条烦人的消息:

找不到名为“DocumentMetadataPortSOAP12”的端点元素 并在 ServiceModel 客户端中签订合同“CODSRef.DocumentMetadataType” 配置部分。这可能是因为没有配置文件 为您的应用程序找到,或者因为没有匹配的端点元素 此名称可以在客户端元素中找到。

我点击了这个链接 - Using app.config with Interop Controls - 它帮助我让我的 VB6 测试 exe 正常工作:

1) 从网络测试客户端复制 app.config

2) 重命名为MyVb6Test.exe.config(与VB6 exe同名)。

到目前为止,一切都很好。

当前问题:

实际的客户端是调用 VB6 .dll 的 VB6.exe,后者调用 .Net/COM-aware .dll:

  MyLegacyVb6App.exe
    +-> MyNewVB6plugin.dll
          +-> MyNewdotNet.dll
                +-> WCF

即使我创建了 MyLegacyVb6App.exe.config - 与工作中的 VB6 测试完全一样 - 我仍然收到“找不到名为 'DocumentMetadataPortSOAP12' 的端点元素...”

这是“MyNewDotNet.dll”中的 .Net 代码:

DocNotificationRequesttype wsRequest = new DocNotificationRequesttype();
DocumentMetadataTypeClient wsClient =  new DocumentMetadataTypeClient("DocumentMetadataPortSOAP12",  m_wsUrl);
DocNotificationResponsetype wsResponse = wsClient.DocNotification(wsRequest);

问:我是否真的需要一个“app.config”?有什么办法可以直接在我的 C# 代码中“硬编码”它需要的任何东西?

问:我的方案还有哪些其他选择:VB6 exe -> VB6 .dll -> .Net/Interop .dll => WCF???

非常感谢您!

【问题讨论】:

  • 我怀疑您的 .NET DLL 无法读取配置文件。您需要对 .NET DLL 源代码进行代码更改,以便它可以读取自己的配置文件。

标签: c# wcf vb6 interop


【解决方案1】:

毕竟我能够通过使用 App.config 解决问题。

问题:

因为我的 .Net .dll 是从从 VB6 .exe 调用的 VB6/COM .dll 调用的(天知道中间有多少 VB6/COM 组件)...... .Net 恰好在寻找app.config 位于 UNEXPECTED 位置 - NOT 位于与 VB6 .exe 本身相同的目录中 (?!?)

解决方案:

我使用AppDomain.CurrentDomain.SetupInformation.ConfigurationFile tp 获取 .Net 正在寻找 app.config 的实际位置:

LogMsg(">>AppConfigFile=" + AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

【讨论】:

    猜你喜欢
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    相关资源
    最近更新 更多