【Azure API 管理】APIM不能连接到 App Service (APIM cannot connect to APP service)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【Azure API 管理】APIM不能连接到 App Service (APIM cannot connect to APP service)相关的知识,希望对你有一定的参考价值。
参考技术AAPIM 无法正确连接到App Service,返回500错误:
单独访问App Service,是可以成功的。当通过APIM访问时候就出现了500错误
根据博文“ 【Azure API 管理】为调用APIM的请求启用Trace -- 调试APIM Policy的利器 ” 中的内容,启用APIM Trace后,在 Backend 发现真实的错误消息为:
error message :The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
这个错误信息指示,后端服务适用的证书问题。当APIM的后端服务所配置的证书为自签名证书,而不是跟CA证书时,通常就会遇见次错误。 APIM服务部署在Windows操作系统所运行的PaaS VM托管上的Azure服务中。因此每个APIM实例都信任所有Windows 系统默认的根证书颁发机构。这个问题的解决办法为:
1:添加一个由受信任的CA机构颁发证书到App Service上。
2:禁止APIM与后端App Service之间的证书链验证。使用 New-AzApiManagementBackend 或 Set-AzApiManagementBackend 对APIM中所配置的后端服务 设置-SkipCertificateChainValidation 为True。
示例命令为:
Set-AzApiManagementBackend : https://docs.microsoft.com/en-us/powershell/module/az.apimanagement/set-azapimanagementbackend?view=azps-7.3.0&viewFallbackFrom=azps-4.8.0
New-AzApiManagementBackend : https://docs.microsoft.com/en-us/powershell/module/az.apimanagement/new-azapimanagementbackend?view=azps-7.3.0&viewFallbackFrom=azps-4.8.0
Troubleshooting 4xx and 5xx Errors with Azure APIM services : https://techcommunity.microsoft.com/t5/azure-paas-blog/troubleshooting-4xx-and-5xx-errors-with-azure-apim-services/ba-p/2115744
分类: 【Azure API 管理】
标签: APIM , App Service , APIM cannot connect to APP service , Could not establish trust relationship , for the SSL/TLS secure channel
Azure 门户、开发人员门户和 Postman 之间的 APIM 响应标头不同
【中文标题】Azure 门户、开发人员门户和 Postman 之间的 APIM 响应标头不同【英文标题】:APIM Response Headers Different Between Azure Portal, Developer Portal and Postman 【发布时间】:2019-07-17 03:15:48 【问题描述】:我正在学习 Azure API 管理,发现 Azure 门户、开发者门户和 Postman 之间的响应标头不同。
我正在此端点上执行 HTTP Get: https://secondattempt.azure-api.net/speakers
使用https://conferenceapi.azurewebsites.net/ 作为 Web 服务 URL。
我在这里比较了它们:
Azure 门户:
-
缓存控制
编译指示
传输编码
内容类型
过期
Set-Cookie (不存在)
日期
Op-Apim-Trace-Location
变化
开发者门户:
-
缓存控制
编译指示
传输编码
内容类型
过期
设置 Cookie
日期
Ocp-Apim-Trace-Location
变化(不存在)
邮递员:
-
缓存控制
编译指示
传输编码
内容类型
过期
设置 Cookie
日期
Ocp-Apim-Trace-Location (不存在)
变化(不存在)
以下是它们在 UI 中的实际外观:
Azure 门户:
开发者门户:
邮递员:
为什么某些标头存在于某些环境中而其他环境中不存在?
另外,为什么标题以不同的顺序出现?
【问题讨论】:
【参考方案1】:对于邮递员(Ocp-Apim-Trace-Location 不存在)
OCP-Apim-Trace 功能使您能够指定 APIM 是否应在 blob 存储上生成跟踪文件。
从 Postman 发出 GET 请求时,OCP-Apim-Trace 未启用。
例如,在 Postman 中将标头设置为“true”,将在响应中返回一个名为 OCP-Apim-Trace-Location 的 HTTP 标头。
这将包含您的跟踪文件的 URL,您可以在任何浏览器中打开该文件。
对于 Postman 和 Developer 门户(不重新发送)
请求未缓存。对 URL 的每个请求都应该被视为唯一且不可缓存的请求。
对于 Azure 门户(Set-Cookie 不存在)
查看 Trace 然后转发请求,我们确实看到了 "name": "Set-Cookie", "value": "ARRAffinity
【讨论】:
以上是关于【Azure API 管理】APIM不能连接到 App Service (APIM cannot connect to APP service)的主要内容,如果未能解决你的问题,请参考以下文章
我们可以在不使用 SAS 令牌的情况下通过 c# 代码调用 Azure API 管理吗