想把我的头绕在这个上面。我在文件名中有一个带有符号的媒体文件。如果我试图创建一个,就会得到一个BadRequest错误,如下所示
{
error: {
code: 'InvalidDoubleEncodedRequestUri',
message:
"The request URI 'https://management.azure.com:443/subscriptions/..../resourceGroups/.../providers/Microsoft.Media/mediaServices/.../assets/M%2526G+1+Width.mp4?api-version=2018-07-01' is not valid, because it contains double encoding sequence '%25'.",
},
}我试图转义文件名中的“&”,但仍然会遇到错误。我不明白的是,如果我通过Azure媒体服务门户上传相同的文件,它就能正常工作。传送门在做什么而我不是?
更新
如果我没有转义资产名,则返回一个400个错误请求(经典的.net黄色死亡屏幕)。据我所知,这意味着名称包含无效字符。一旦我删除了“&”,它就能工作了。
据我所读到的这里,它提到您不能在资产名称中使用以下字符(“<”、‘’>、'%‘、'&’、‘’、'\‘、'?’、'/‘、'*’、'+‘、'.',单引号字符,或任何控制字符)。但这让我很困惑。容器名称是自动生成的(资产-.一些guid.),然后它只是容器中的blob (文件名中允许使用“&”字符)。我只是不明白为什么,如果我通过门户上传,它可以工作,但通过SDK失败。
发布于 2019-12-17 00:46:22
Azure使用Azure,它不遵循v2资源管理命名约束。
在V3 API中,资产是一个命名的ARM实体,因此遵循这里定义的所有其他Azure资源的命名规则:v3中的命名约定
在使用v3 API时,您应该遵循Azure实体的命名准则。如果需要存储备用标识信息,可以在资产上使用自定义的"AlternateId“属性。或者,如果您愿意,也可以使用description属性。
curl -X PUT \
'https://management.azure.com/subscriptions/XXXXXXX/resourceGroups/XXXXX/providers/Microsoft.Media/mediaServices/XXXXX/assets/myAsset?api-version=2018-07-01' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer
-H 'Connection: keep-alive' \
-H 'Content-Length: 303' \
-H 'Content-Type: application/json' \
-H 'Host: management.azure.com' \
-d '{
"properties": {
"description": "some custom description with whatever you need to store",
"alternateId": "(Optional) some custom string to help you look it up in your database"
}
}'https://stackoverflow.com/questions/59342320
复制相似问题