我创建了一个.NET Web应用程序,它将文件作为blob上传到Azure存储。
这样可以正常工作,但是当我添加特定的元数据标签时会出错
如果我添加一个具有相当大值的“描述”元数据标记(测试时长度大约为425个字符),则会收到400错误请求错误。
当我使用Azure管理门户手动执行此操作时,没有任何问题。< / p>
使用的代码:
blob.Metadata["Description"] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam non nisi suscipit, dignissim nibh quis, imperdiet metus. Donec elementum nunc nec mi mollis, eget rhoncus lorem aliquam. Sed gravida, elit at elementum euismod, ligula arcu viverra mauris, consectetur commodo sem dui id tortor. Duis rutrum libero at ante tincidunt posuere. Aliquam turpis arcu, pellentesque ac purus vitae, eleifend consectetur lectus imperdiet ornare.";
blob.SetMetadata();
此致
路加
编辑:它现在提供400错误而不是403.(错误请求而不是禁止)
编辑2:经过一些测试后,我发现它在字符串中放入'\ n'个字符。不知怎的,这引起了我的问题。 (它仍然允许在Azure管理门户中执行)
答案 0 :(得分:2)
最后一个问题是它无法接受逃脱的特征 我通过编码和解码字符串来解决这个问题。
Convert.ToBase64String(Encoding.UTF8.GetBytes("Some value with a \n in it."));
并将其取回
Encoding.UTF8.GetString(Convert.FromBase64String("U29tZSB2YWx1ZSB3aXRoIGEgCiBpbiBpdC4="));
这解决了这个问题。谢谢你们的支持。 (Gaurav Mantri)
答案 1 :(得分:0)
仅供参考,这是一个错误,将在以后的版本中解决:https://github.com/MicrosoftDocs/azure-docs/issues/30093
在Azure存储资源管理器中,我可以将换行符('\ n')分配给 一个blob元数据值,没有任何问题。但是,当我打电话 cloudBlockBlob.SetMetadata()或cloudBlockBlob.SetMetadataAsync()与 包含换行符的值,它将失败。
其他人在此SO线程中重现了相同的问题,但是 注释之一中引用的文档不存在 不再。
当前文档表明任何ASCII字符都应 适用于元数据值,反斜杠和'n'都是 被视为有效的ASCII字符。