首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用转义符号和名称创建Azure媒体资产v3在BadRequest中失败,但通过Azure门户创建时工作正常

用转义符号和名称创建Azure媒体资产v3在BadRequest中失败,但通过Azure门户创建时工作正常
EN

Stack Overflow用户
提问于 2019-12-15 08:29:58
回答 1查看 158关注 0票数 0

想把我的头绕在这个上面。我在文件名中有一个带有符号的媒体文件。如果我试图创建一个,就会得到一个BadRequest错误,如下所示

代码语言:javascript
复制
{
    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失败。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-17 00:46:22

Azure使用Azure,它不遵循v2资源管理命名约束。

在V3 API中,资产是一个命名的ARM实体,因此遵循这里定义的所有其他Azure资源的命名规则:v3中的命名约定

在使用v3 API时,您应该遵循Azure实体的命名准则。如果需要存储备用标识信息,可以在资产上使用自定义的"AlternateId“属性。或者,如果您愿意,也可以使用description属性。

代码语言:javascript
复制
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"
  }
}'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59342320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档