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