gpt4 book ai didi

c# - VB6 调用 WCF : Could not find endpoint element

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:31 29 4
gpt4 key购买 nike

我有一个遗留的 VB6 应用程序需要调用 .Net .dll 才能调用 WCF 网络服务。

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

Could not find endpoint element with name 'DocumentMetadataPortSOAP12' and contract 'CODSRef.DocumentMetadataType' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this name could be found in the client element.

我点击了这个链接 - 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???

非常感谢您!

最佳答案

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

问题:

因为我的 .Net .dll 是从 VB6/COM .dll 调用的,而 VB6/COM .dll 是从 VB6 .exe 调用的(天知道中间有多少 VB6/COM 组件)... .Net 碰巧在寻找app.config 在一个UNEXPECTED 地方 - 在与 VB6 .exe 本身相同的目录中(?!?)

解决方案:

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

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

关于c# - VB6 调用 WCF : Could not find endpoint element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38386122/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com