Azure APIm 不允许在多个 API 上使用 HTTPS

Azure APIm 不允许在多个 API 上使用 HTTPS

我们在 Azure 中设置了一个具有 2 个 API 的 APIm。一个是从 WSDL 创建的 SOAP 服务。它有一个 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 具有以下配置:

对于 WSDL API:

  • 显示名称:WSDL 的 API

  • Web 服务 URL: https://my-apim.dev.azure.net/

  • URL 方案:HTTP(S)

  • API URL 后缀:无(正如它们在操作中定义的)

  • 运营:

    • 得到/SubmitService/Submit.svc?singleWsdl
    • 得到/SubmitService/Submit.svc?wsdl

问题是,当访问 HTTPShttps://my-apim.azure-api.net/SubmitService/Submit.svc?singleWsdl或 ?wsdl,返回 404 not-found 错误。但是,转到 HTTP 版本,WSDL 会按预期返回。

如果我将 WSDL API 的 URL 方案更改为“HTTPS”,并点击 https:// url,则会出现 404 错误,如果我尝试 http:// 仍会出现 404 错误。唯一可行的方法是使用“HTTP”或“HTTP(S)”的 URL 方案并点击 http:// url。我知道这在技术上是可行的,但当前 URL 使用的是 https://,我们希望保持这种状态。

我怀疑这两个 API 和 HTTP 之间存在某种冲突,我是不是遗漏了什么?

我想要两个 API,都使用 HTTPS

编辑:我通过编辑 WebService URL 做了一些实验,包括(如您在 SOAP API 中看到的)在Web 服务网址属性,并更改 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,而当前的内部托管解决方案则不是。

相关内容