【发布时间】: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 源代码进行代码更改,以便它可以读取自己的配置文件。