【Azure 应用服务】App Service - 在修改应用服务计划的页面中,为什么无法查看到同一个资源组下面的其他应用服务计划(App Service Plan)呢?
问题描述
在App Service的门户上,可以通过“Change App Service Plan”来改变当前App Service所属的应用服务计划(App Service Plan),在页面中,它会自动列举出来当前订阅下,同一个Resource Group的App Service Plan。
但是,为什么它显示不出来同一个资源组,同一个订阅号下面的,需要的appplantest001这一个App Service Plan呢?
问题分析
因为Azure门户上的所有内容都是调用REST API来获取的,所以只需要通过浏览器F12(开发者模式)下,找到在页面Change App Service Plan中获取有效的App Service Plan的API就可以进行下一步分析,查看为什么资源组里面显示的App Service Plan无法在页面中列举出来。
第一步:进入App Service 页面,点击F12,选择 Network Tab页。
第二步:进入Change App Service Plan页面,点开App Serivce Plan的下拉列表。
第三步:筛查所有的返回结果,在其中通过页面中的关键字进行过滤。如本次实验中使用的“ASP-apprg-8ff0”
第四步:通过返回结果,反向查看请求所发送的Payload。找出其中主要的过滤条件。如本实验中找出的条件如下:
where type == 'microsoft.web/serverfarms' | extend webspace = extract('.*', 0, tostring(properties.webSpace)) | where webspace == 'app-rg-ChinaNorth2webspace' | project id, name, type, kind, properties, webspace, sku
以上四步的操作动画如下:
当拿到第四步的过滤条件后,这里非常明显是一个 Azure Resource Graph的查询语句,可以通过Azure Resource Graph Explorer页面来进行验证:Azure Resource Graph Explorer - Microsoft Azure 由世纪互联运营
把webspace 放入到显示窗口中,发现确实看不见 appplantest001 这个App Service Plan。
放宽以上语句的Where条件,指过滤当前订阅号下的App Service Plan,对比看一看webspace是否相同:
where type == 'microsoft.web/serverfarms' | extend webspace = extract('.*', 0, tostring(properties.webSpace)) | where subscriptionId =='your subscription id' //| where webspace == 'app-rg-ChinaNorth2webspace' | project id, name, type, kind, webspace, sku
执行结果:发现Webspace值不同,所以它无法被Change App Service Plan页面显示出来。
为什么同一个资源组下面的 WebSpace 会不一样呢? 这是因为App Service Plan是可以在资源组间相互移动的,但是webspace的值确不会跟随移动的操作而改变。它是在最开始创建的时候就已经确定,无法继续修改。 的确,应用服务计划(appplantest001)是创建的时候选择了错误的资源组,然后把移动到正确的资源组的。这的确就是真相。
在发现问题根源后,并且无法移动到不同的webspace下,最后删除错误的App Service Plan,重新创建新的App Service Plan(appplantest001), 修改应用服务计划成功。达成目标!
参考资料
Azure Resource Graph Explorer:https://portal.azure.cn/#blade/HubsExtension/ArgQueryBlade
将应用移到另一个应用服务计划:https://docs.azure.cn/zh-cn/app-service/app-service-plan-manage#move-an-app-to-another-app-service-plan
- 【Azure 应用服务】App Service服务无法启动,打开Kudu站点,App Service Editor 页面均抛出:The service is unavailable
- 【Azure 应用服务】如何定期自动重启 Azure App Service Plan(应用服务计划)
- 【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
- 【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
- 【Azure 应用服务】遇见“无法创建hybrid connection for App Service”的解决办法
- 【Azure 应用服务】App Service中,为Java应用配置自定义错误页面,禁用DELETE, PUT方法
- 【Azure 应用服务】通过 Web.config 开启 dotnet 应用的 stdoutLog 日志,查看App Service 产生500错误的原因
- 【应用服务 App Service】App Service For Linux 中如何挂载一个共享文件夹呢? Mount Azure Storage Account File Share
- 【Azure 应用服务】App Service / Function App 修改系统时区为中国时区的办法(Azure中所有服务的默认时间都为UTC时间,转换为北京时间需要+8小时)
- 【Azure 应用服务】App Service 进入后台管理(Kudu)页面,因为文件过多而显示不全的问题
- 【Azure 应用服务】App Service For Linux 怎么安装Composer,怎么安装PHP扩展,怎么来修改站点根路径启动程序?
- 【Azure 应用服务】App Service 无法连接到Azure MySQL服务,报错:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
- 【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
- 【Azure 应用服务】Azure App Service多实例中,出现某一个实例CPU居高不下的情况,如何重启单个实例呢?
- 【应用服务 App Service】在Azure Web App的部署文件中,是否可以限制某些文件无法被访问?(如json)
- 【Azure 应用程序见解】在Azure门户中,创建App Service(应用服务)时,无法一起创建Application Insights的问题
- 【Azure 应用服务】如何查看App Service Java堆栈JVM相关的参数默认配置值?
- 【Azure 应用服务】App Service多个部署槽(Slot)之间,设置Traffic百分比后,如何来判断请求是由那一个槽(Slot)来进行处理呢?
- 【Azure 应用服务】App Service For Linux 部署PHP Laravel 项目,如何修改首页路径为 wwwroot\public\index.php
- 【Azure 应用服务】App Service For Linux 环境中,如何从App Service中获取GitHub私有库(Private Repos)的Deploy Key(RSA key)呢?