Geben Sie die ausgehende IP-Adresse an, die mit dem WCF-Client verwendet werden soll

Wie definiere ich den LocalEndPoint, der von einem WCF-Client beim Aufrufen eines WCF-Dienstes verwendet wird (wenn der Client-Computer über mehrere IP-Adressen verfügt)?

Ich habe einen Computer in einer DMZ mit zwei IP-Adressen. Die externe IP-Adresse kann über die Firewall über eine VPN-Verbindung von unserem Webserver bei einem externen Dienstanbieter aus erreicht werden. Auf diesem Computer wird ein auf WCF und Unity basierender benutzerdefinierter App-Server ausgeführt, der als Proxy oder Application Level Gateway (ALG) fungieren soll. Es akzeptiert die Dienstaufrufe vom Webserver und verwendet eine wcf-Client-Factory, um die Dienstaufrufe neu zu generieren und sie an den realen App-Server im LAN weiterzuleiten.

Wenn die Dienstaufrufe auf diesem Proxy mithilfe einer wcf-Client-Factory neu erstellt werden, sollte der wcf-Client die zweite interne IP-Adresse dieses Computers verwenden, da nur Nachrichten, die von dieser internen IP-Adresse stammen, die Firewall passieren dürfen, um zu erreichen der App-Server im LAN. Leider entscheiden sich unsere wcf-Client-Proxys immer dafür, die ausgehenden Nachrichten unter Verwendung der ersten "externen" IP-Adressen zu erstellen. Ich suche nach einer Möglichkeit, die von den wcf-Client-Proxys zu verwendende IP-Adresse explizit festzulegen.

Ich konnte nur ein WCF-Bindungselement finden, das die Definition eines LocalEndPoint oder einer ClientBaseAddress ermöglicht: CompositeDuplexBindingElement. Soweit ich aus der Dokumentation weiß, soll diese Eigenschaft dem Server mitteilen, wohin die asynchronen Antwortnachrichten gesendet werden sollen. Es handelt sich also um eine andere Einstellung als die, nach der ich suche.

Hast du eine Idee, was ich tun kann, um eine praktikable Lösung zu finden?

Vielen Dank im Voraus für hilfreiche Ratschläge !!

Dies scheint eine ähnliche Frage zu sein, nur mit TcpClient / Sockets anstelle von WCF: Geben Sie die ausgehende IP-Adresse an, die mit TCPClient / Socket in C # @ verwendet werden sol

Und noch eine, diesmal in Bezug auf einen SoapClient:Binden eines neuen SoapClient an eine bestimmte IP-Adresse, bevor ausgehende Anforderungen gesendet werden

Antworten auf die Frage(6)

Ihre Antwort auf die Frage