Hallo,
ich habe kein passendes Forum zu WCF gefunden, deswegen hier unter C#, da dies auch die verwendete Sprache ist, wenngleich es vermutlich gar nicht direkt um C# geht...
ich habe auf einem öffentlich zugängigen (Unternehmens)Server einen WCF Service laufen. Selbigen kann ich (beispielhaft) über
https://myappname.mycompany.com/Service/MyService.svc
aufrufen. Ich bekomme dann die Seite, so wie man sie eben von WCF kennt:

Schon hier sehe ich nun aber oben in den Zeilen mit dem Kommando für svcutil bzw. dem Link zum WSDL eine andere Adresse, nämlich eine "interne" Adresse des Servers, in etwa so:
http://myservername.my-dmz.com/Service/MyService.svc
Das Verhalten ist unabhängig davon, ob ich den Service von einem Rechner im Unternehmensnetz oder von extern aufrufe. Die 'interne' Adresse wäre natürlich von extern nicht erreichbar. Dementsprechende ist der WSDL-Link von intern abrufbar, von extern nicht
(da der ja auf die interne Serverbezeichnung zeigt).
In meinem Client (.NET Framework 4.7.2, C# 7) kann ich über die interne Adresse den Service aufrufen:
<system.serviceModel>
<client>
<endpoint address="http://myservername.my-dmz.com/Service/MyService.svc"
bindingConfiguration="myServiceBinding"
binding="wsFederationHttpBinding"
contract="myapp.IMyService" />
</client>
<bindings>
<wsFederationHttpBinding>
<binding name="myServiceBinding"
messageEncoding="Mtom"
maxBufferPoolSize="310000000"
maxReceivedMessageSize="310000000"
receiveTimeout="00:10:00"
sendTimeout="00:10:00">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="310000000" maxBytesPerRead="310000000" />
<reliableSession enabled="true" ordered="true" />
<security mode="None" />
</binding>
</wsFederationHttpBinding>
</bindings>
</system.serviceModel>
Aber natürlich möchte ich ja eigentlich über die öffentliche Adresse und HTTPS zugreifen:
<system.serviceModel>
<client>
<endpoint address="https://myappname.mycompany.com/Service/MyService.svc"
binding="customBinding"
bindingConfiguration="mySecureServiceBinding"
contract="myapp.IMyService" />
</client>
<bindings>
<customBinding>
<binding name="mySecureServiceBinding">
<reliableSession />
<httpsTransport />
</binding>
</customBinding>
</bindings>
</system.serviceModel>
Doch hier bekomme ich einen Fehler. Die Exception hat erst einmal diverse Informationen aber auch erst einmal nur einen HTTP 500.
Ausschlaggebend bzw. der eigentlich Grund für den Fehler ist vermutlich das, was im Text steht:
There was no endpoint listening at https://myappname.mycompany.com/Service/MyService.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
Womit wir vermutlich genau bei dem sind, was ich oben schon beschrieben habe, daß nach Aufruf der öffentlichen Adresse ein Verweis auf die interne Adresse gemacht wird / enthalten ist.
Kann mir jemand einen Tipp geben, wie ich mit dem Problem umgehen muss, damit nur die öffentliche Adresse verwendet wird?