
Мы настроили APIm в Azure с 2 APi. Один из них — это служба SOAP, созданная из WSDL. У него есть одна операция POST, которая отлично работает с использованием HTTPS. Поскольку мы мигрируем в облако и хотим, чтобы миграция была максимально прозрачной для клиентов, у него также есть операция GET для предоставления WSDL клиентам. Это было установлено с помощью инструкций, найденных здесь:https://mbraekman.github.io/2020/05/24/Expose-WSDL-through-APIM/и работает просто отлично с использованием/soapAction=wsdlв операции GET.
Однако, чтобы ничего не менять на клиентах, нам нужно использовать альтернативный метод, который сохраняет URL-адрес на/мойсервер/api?wsdlвместо того, чтобы включать/?soapAction=wsdlпараметр.
В результате получается следующая настройка:
SOAP API имеет следующую конфигурацию:
Отображаемое имя:Отправить службу SOAP
URL-адрес веб-сервиса: https://my-apim.dev.azure.net/SubmitService/Submit.svc
Схема URL:HTTPS
Суффикс URL-адреса API:ОтправитьService/Отправить.svc
Операции:
- ПОЧТА/?soapAction={любое}
- ПОЛУЧАТЬ/?soapAction=wsdl
Для API WSDL:
Отображаемое имя:API для WSDL
URL-адрес веб-сервиса: https://my-apim.dev.azure.net/
Схема URL:HTTP(S)
Суффикс URL-адреса API:Нет (как они определяются в операциях)
Операции:
- ПОЛУЧАТЬ/SubmitService/Submit.svc?singleWsdl
- ПОЛУЧАТЬ/SubmitService/Submit.svc?wsdl
Проблема в том, что при посещении HTTPShttps://my-apim.azure-api.net/SubmitService/Submit.svc?singleWsdlили ?wsdl, возвращается ошибка 404 not-found. Однако, если перейти к версии HTTP, WSDL возвращается, как и ожидалось.
Если я изменю схему URL на «HTTPS» для API WSDL и нажму на URL https://, то это будет 404, если я попробую http://, то все еще 404. Единственное, что работает, это использование схемы URL «HTTP» или «HTTP(S)» и нажатие на URL http://. Я знаю, что технически это работает, но текущий URL использует https://, и мы хотим сохранить это.
Я подозреваю, что между двумя API и HTTP есть какая-то коллизия. Может, я что-то упускаю?
Я хочу иметь 2 API, оба использующие HTTPs
EDIT: Я провел еще несколько экспериментов, редактируя URL-адрес WebService, включая (как вы можете видеть в SOAP API) включение полного URL-адреса вURL-адрес веб-сервисасвойство, а также изменение URL-адресов/суффиксов таким образом, чтобы один из них былhttps://my-apim.dev.azure.net/SubmitServiceа другой -https://my-apim.dev.azure.net/SubmitService/Submit.svc
Чтоработаетпереименовывает их следующим образом:
https://my-apim.dev.azure.net/SubmitService/
и
https://my-apim.dev.azure.net/SubmitService2/
с соответствующими суффиксами
Но это не идеально, поскольку теперь это отдельный API/URL для клиентов, тогда как текущее локально размещенное решение таковым не является.