通过Postman移动Azure资源时出现400 Bad Request错误如何解决
报错根因
两个报错分别对应两处请求配置错误:
UnsupportedMediaType:请求未指定正确的Content-Type头,Azure ARM接口仅接受application/json格式的请求体,该问题可通过添加对应请求头解决。InvalidRequestContent:资源移动接口的resources参数要求传入字符串数组类型,即使只移动单个资源也需要按数组格式传参,当前请求中该字段传的是单个字符串,无法被接口反序列化为要求的System.String[]类型,因此报错。
修复操作步骤
- 校验请求头配置
确保Postman请求头携带以下两个必填字段:Content-Type: application/json Authorization: Bearer <替换为你之前获取到的有效access token> - 修正请求体格式
将resources字段的资源ID包裹在方括号中,改为数组格式,修正后的请求体示例:{ "resources": [ "/subscriptions/mysubscriptionid/resourceGroups/resourcegroupname/providers/Microsoft.KeyVault/vaults/keyvaultname" ], "targetResourceGroup": "/subscriptions/mysubscriptionid/resourceGroups/targetresourcegroupname" } - 前置校验避免后续报错
- 用于生成token的服务主体,需要同时在源资源组、目标资源组拥有
Contributor及以上权限,否则会触发权限拒绝错误 - 待移动的Key Vault需要满足跨资源组移动要求:源、目标资源组属于同一Azure AD租户,移动完成后需要重新配置Key Vault访问策略、私有终结点、诊断设置等关联资源
- 资源移动是异步操作,接口返回202 Accepted状态码后,可通过响应头的Location地址轮询查询操作最终结果
- 用于生成token的服务主体,需要同时在源资源组、目标资源组拥有
内容的提问来源于stack exchange,提问作者Vithika_312
相关产品推荐
相关产品推荐

