问题描述使用微软API管理服务(Azure API Management),简称APIM 。因为公司策略要求只能内部网络访问,所以启用了VNET集成 。集成方式见: (在内部模式下使用 Azure API 管理连接到虚拟网络:https://docs.azure.cn/zh-cn/api-management/api-management-using-with-internal-vnet?tabs=stv1)
【【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败】当APIM配置好后,直接通过CURL命令访问APIM的网关接口(如:curl https://bei3apim.azure-api.cn/httpbin/get -v ),请求响应成功 。
文章插图
但是 , 直接在门户上访问时,为什么一直都报错 “Could not complete the request. Please try again later.”
文章插图
问题分析首先,请求通过APIM 网关已经能成功转发请求到后端服务器,并且返回状态为200 。获得正确的返回结果 。
然后,这个问题,只发生在APIM门户的 Test 页面,并且当点击“Test” 按钮后,马上就触发了API 管理提示的错误 。
所以 , 判断这个问题,就发生在APIM门户页面端,是JS的一些执行报错 。所以可以通过浏览器开发模式(F12)查看,Console中的输出 , 检测JS执行的错误消息 。
文章插图
谜底揭晓:因为APIM的Test功能是把请求先发送到一个代理服务器( https://apimanagement-cors-proxy-mc.azure-api.cn/ )上执行,而在内网中,这个代理服务器URL无法被解析 。
解决方法:在虚拟网络的DNS服务器中,加上对域名(apimanagement-cors-proxy-mc.azure-api.cn)的解析 。或者直接在当前的VM中修改windows host文件(C:\Windows\System32\drivers\etc)
解题步骤1) 在公网中 , 通过 nslookup apimanagement-cors-proxy-mc.azure-api.cn 解析出它的IP地址
文章插图
2) 进入VM 的Host文件,添加 IP 域名记录
文章插图
3) 刷新APIM Test页面,再次点击Test Send 按钮 , 请求发送成功!
文章插图
[END]
参考资料在内部模式下使用 Azure API 管理连接到虚拟网络:https://docs.azure.cn/zh-cn/api-management/api-management-using-with-internal-vnet?tabs=stv1
推荐阅读
- DNF里浓缩的异界精髓怎么获得(浓缩的异界精髓作用)
- 小孩沉迷手机网络游戏怎么办(儿童玩手机游戏沉迷怎么办)
- 带你了解NLP的词嵌入
- 【HarmonyOS】【ArkUI】在Service中使用Emitter
- vivox70pro+屏幕多大_vivox70pro+屏幕尺寸
- 一星期的小鸡怎么养(街上买的小鸡怎么养)
- 【实操日记】使用 PyQt5 设计下载远程服务器日志文件程序
- 【lwip】11-UDP协议&源码分析
- 【什么是妖股】妖股是什么意思
- .net 温故知新:【9】.NET日志记录 ILogger使用和原理