2016-07-15 52 views
2

我有一個傳統的VB6應用程序需要調用.Net .dll以調用WCF Web服務。VB6調用WCF:找不到端點元素

起初,我得到這個惱人的消息:

找不到名爲「DocumentMetadataPortSOAP12」 並在ServiceModel客戶 配置部分合同「CODSRef.DocumentMetadataType」終結點元素。這可能是因爲沒有爲您的應用程序找到配置文件 ,或者因爲在客戶端元素中找不到此名稱匹配的端點元素 。

我跟着這個鏈接 - Using app.config with Interop Controls - 它幫我把我的VB6測試exe的工作:從它改名MyVb6Test.exe.config網測試客戶端

2)

1)複製一個app.config(與VB6 exe相同的名稱)。

到目前爲止,這麼好。

目前存在的問題:

實際的客戶端是一個VB6.EXE調用VB6的.dll文件,它調用的.Net/COM感知.dll文件:

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

即使我創建MyLegacyVb6App.exe.config - 酷似工作VB6測試 - 我仍然得到

下面是「MyNewDotNet.dll的」 Net代碼「無法名爲‘DocumentMetadataPortSOAP12’......找不到終結點元素」:

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 ???

非常感謝您提前!

+0

我懷疑你的.NET DLL不能讀取配置文件。您需要對.NET DLL源代碼進行代碼更改,以便它可以讀取它自己的配置文件。 – abhi

回答

1

我終於可以通過使用App.config來解決問題了。

問題:

因爲我的.Net .dll文件正在從VB6/COM .dll文件從VB6名爲.exe文件(與天哪知道中間有多少VB6/COM組件)...調用。 (?!?) - 淨碰巧尋找一個意外地方在app.config中THW 相同的目錄VB6 .exe文件本身

SOLUTION:

我以前AppDomain.CurrentDomain.SetupInformation.ConfigurationFile TP得到.Net正在尋找app.config的實際位置:

LogMsg(">>AppConfigFile=" + AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 
相關問題