2016-07-15 24 views
2
nicht finden

Ich habe eine veraltete VB6-Anwendung, die .NET-DLL aufrufen muss, um einen WCF-Webdienst aufzurufen.VB6 ruft WCF auf: Konnte das Endpunktelement

Zuerst habe ich diese lästige Nachricht:

nicht Endpunktelement und Vertrag ‚CODSRef.DocumentMetadataType‘ mit dem Namen ‚DocumentMetadataPortSOAP12‘ finden kann in dem Servicemodel Client Konfigurationsabschnitt. Dies liegt möglicherweise daran, dass für Ihre Anwendung keine Konfigurationsdatei gefunden wurde oder dass kein Endpunktelement mit dem Namen im Clientelement gefunden wurde.

folgte ich diesen Link - Using app.config with Interop Controls - und es hat mir geholfen, meine VB6 Test exe Arbeits erhalten:

1) eine app.config von einem Netto-Test-Client kopiert

2) es Umbenannt MyVb6Test.exe.config (derselbe Name wie die VB6-Exe).

So weit, so gut.

aktuelles Problem:

Der eigentliche Kunde ist ein VB6.exe, die einen VB6-DLL aufruft, die den .NET/COM-aware DLL ruft:

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

Auch wenn ich MyLegacyVb6App.exe.config erstellt - genau wie der Arbeits VB6 Test - ich bin immer noch

Hier ist der Code .Net in „MyNewDotNet.dll“ „Endpunktelement nicht mit dem Namen‚DocumentMetadataPortSOAP12‘... finden kann“:

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

F: Gibt es einen Grund, warum ich eigentlich eine "app.config" brauche? Gibt es eine Möglichkeit, dass ich direkt in meinem C# -Code "hart codieren" kann, was immer es benötigt?

F: Welche anderen Alternativen habe ich für mein Szenario: VB6 exe -> VB6 .dll -> .Net/Interop .dll => WCF ???

Vielen Dank im Voraus!

+0

Ich vermute, dass Ihre .NET DLL die Konfigurationsdatei nicht lesen kann. Sie müssen eine Codeänderung für den .NET-DLL-Quellcode vornehmen, damit er seine eigene Konfigurationsdatei lesen kann. – abhi

Antwort

1

Ich war in der Lage, das Problem zu lösen, indem Sie schließlich eine App.config verwenden.

PROBLEM:

Weil mein .Net DLL aus einem VB6 aufgerufen wurde/COM DLL von einer VB6 Exe genannt (mit Gosh weiß, wie viele VB6/COM-Komponenten in der Mitte) .... (?!?) - Net geschah für die app.config in einem UNERWARTETE Ort zu suchen NICHT in thw selben Verzeichnis wie die VB6 Exe selbst

LÖSUNG:

I verwendet AppDomain.CurrentDomain.SetupInformation.ConfigurationFile tp zu bekommen der tatsächliche Speicherort, an dem .Net nach app.config gesucht hat:

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