
Wir haben in Azure eine API mit 2 APIs eingerichtet. Einer ist ein SOAP-Dienst, der aus einer WSDL erstellt wurde. Er verfügt über einen einzelnen POST-Vorgang, der mit HTTPS problemlos funktioniert. Da wir in die Cloud migrieren und die Migration für Clients weitgehend transparent halten möchten, verfügt er auch über einen GET-Vorgang, um die WSDL für Clients verfügbar zu machen. Dies wurde mithilfe der hier aufgeführten Anweisungen eingerichtet:https://mbraekman.github.io/2020/05/24/Expose-WSDL-through-APIM/und funktioniert einwandfrei mit dem/soapAction=wsdlim GET-Vorgang.
Um jedoch keine Änderungen an den Clients vorzunehmen, müssen wir die alternative Methode verwenden, bei der die URL bei/meinserver/api?wsdlanstatt die/?soapAction=wsdlParameter.
Daraus ergibt sich folgendes Setup:
SOAP API hat die folgende Konfiguration:
Anzeigename:SOAP-Übermittlungsdienst
WebService-URL: https://my-apim.dev.azure.net/SubmitService/Submit.svc
URL-Schema:HTTPS
API-URL-Suffix:SubmitService/Submit.svc
Operationen:
- POST/?soapAction={irgendein}
- ERHALTEN/?soapAction=wsdl
Für die WSDL-API:
Anzeigename:API für WSDLs
WebService-URL: https://my-apim.dev.azure.net/
URL-Schema:HTTP(S)
API-URL-Suffix:Keine (wie sie in den Operationen definiert werden)
Operationen:
- ERHALTEN/SubmitService/Submit.svc?singleWsdl
- ERHALTEN/SubmitService/Submit.svc?wsdl
Das Problem ist, dass beim Besuch der HTTPShttps://my-apim.azure-api.net/SubmitService/Submit.svc?singleWsdloder ?wsdl, wird ein 404-Fehler zurückgegeben. Beim Wechsel zur HTTP-Version wird jedoch wie erwartet das WSDL zurückgegeben.
Wenn ich das URL-Schema für die WSDL-API auf „HTTPS“ ändere und die URL https:// eintippe, kommt eine 404-Antwort. Wenn ich http:// versuche, kommt immer noch eine 404-Antwort. Das einzige, was funktioniert, ist, ein URL-Schema von „HTTP“ oder „HTTP(S)“ zu verwenden und die URL http:// einzugeben. Ich weiß, dass das technisch funktioniert, aber die aktuelle URL verwendet https:// und das wollen wir auch so beibehalten.
Ich vermute, dass es zu einer Art Kollision zwischen den beiden APIs und HTTPs kommt. Übersehe ich hier etwas?
Ich möchte die 2 APIs haben, beide mit HTTPs
EDIT: Ich habe noch ein paar Experimente gemacht, indem ich die WebService-URL bearbeitet habe, einschließlich (wie Sie in der SOAP-API sehen können) der vollständigen URL in derWebService-URLEigenschaft sowie die Änderung der URLs/Suffixe, so dass eine davonhttps://my-apim.dev.azure.net/SubmitServiceund das andere isthttps://my-apim.dev.azure.net/SubmitService/Submit.svc
Wasfunktioniertbenennt die beiden wie folgt um:
https://my-apim.dev.azure.net/SubmitService/
Und
https://my-apim.dev.azure.net/SubmitService2/
mit den jeweiligen Suffixen
Dies ist jedoch nicht ideal, da es sich jetzt um eine separate API/URL für Clients handelt, was bei der aktuellen vor Ort gehosteten Lösung nicht der Fall ist.