
Configuramos uma APIm no Azure com 2 APIs. Um é um serviço SOAP criado a partir de um WSDL. Possui uma única operação POST que funciona perfeitamente usando HTTPS. Como estamos migrando para a nuvem e queremos manter a migração transparente para os clientes, também existe uma operação GET para expor o WSDL aos clientes. Isso foi estabelecido usando as instruções encontradas aqui:https://mbraekman.github.io/2020/05/24/Expose-WSDL-through-APIM/e funciona muito bem usando o/soapAction=wsdlna operação GET.
Porém, em nome de não mudar as coisas nos clientes, precisamos usar o método alternativo, que mantém a URL em/meuservidor/api?wsdlem vez de ter que incluir o/?soapAction=wsdlparâmetro.
Isso resulta na seguinte configuração:
A API SOAP possui a seguinte configuração:
Nome de exibição:Enviar serviço SOAP
URL do serviço web: https://my-apim.dev.azure.net/SubmitService/Submit.svc
Esquema de URL:HTTPS
Sufixo do URL da API:EnviarServiço/Submit.svc
Operações:
- PUBLICAR/?soapAction={qualquer}
- PEGAR/?soapAction=wsdl
Para a API WSDL:
Nome de exibição:API para WSDL
URL do serviço web: https://my-apim.dev.azure.net/
Esquema de URL:HTTP(S)
Sufixo do URL da API:Nenhum (conforme definido nas operações)
Operações:
- PEGAR/SubmitService/Submit.svc?singleWsdl
- PEGAR/SubmitService/Submit.svc?wsdl
O problema é que ao visitar o HTTPShttps://my-apim.azure-api.net/SubmitService/Submit.svc?singleWsdlou ?wsdl, um erro 404 não encontrado foi retornado. Porém, indo para a versão HTTP, o WSDL é retornado conforme o esperado.
Se eu alterar o esquema de URL para "HTTPS" para a API WSDL e clicar no url https://, será 404, se eu tentar http:// ainda será 404. A única coisa que funciona é usar um esquema de URL de "HTTP " ou "HTTP(S)" e acessando o URL http://. Sei que isso funciona tecnicamente, mas o URL atual usa https:// e queremos mantê-lo assim.
Suspeito que haja algum tipo de colisão entre as 2 APIs e HTTPs. Há algo que estou faltando aqui?
Quero ter as 2 APIs, ambas usando HTTPs
EDIT: Fiz mais algumas experiências através da edição da URL do WebService, incluindo (como você pode ver na API SOAP) incluir a URL completa noURL do serviço webpropriedade, bem como alterar os URLs/sufixos para que um deles sejahttps://my-apim.dev.azure.net/SubmitServicee o outro éhttps://my-apim.dev.azure.net/SubmitService/Submit.svc
O quefuncionaestá renomeando os dois assim:
https://my-apim.dev.azure.net/SubmitService/
e
https://my-apim.dev.azure.net/SubmitService2/
com os respectivos sufixos
Mas isso não é o ideal, pois agora é uma API/URL separada para clientes, o que não acontece com a atual solução hospedada no local.