VB6调用WCF:找不到端点元素

时间:2016-07-15 00:25:23

标签: c# wcf vb6 interop

我有一个遗留的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.exe,它调用VB6 .dll,它调用.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 ???

非常感谢你!

1 个答案:

答案 0 :(得分:1)

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

问题:

因为我的.Net .dll是从一个VB6 / COM调用的.dll调用来自VB6 .exe(gosh知道中间有多少VB6 / COM组件)... .Net正好在寻找 UNEXPECTED 中的app.config - NOT 与VB6 .exe本身在同一目录中(?!?)

解决方案:

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

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