azure - 保存元数据时收到 400

标签 azure azure-storage azure-blob-storage

我创建了一个 .NET Web 应用程序,它将文件作为 blob 上传到 Azure 存储。

这工作正常,但是,当我添加特定的元数据标签时,它会出错。
如果我添加一个具有相当大值的“描述”元数据标记(测试时长度约为 425 个字符),我会收到 400 错误请求错误。
当我使用 Azure 管理门户手动执行此操作时,没有任何问题。

使用的代码:

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管理门户中仍然允许这样做)

最佳答案

最后一个问题是它无法接受转义字符。
我通过对字符串进行编码和解码解决了这个问题。

Convert.ToBase64String(Encoding.UTF8.GetBytes("Some value with a \n in it."));

并把它拿回来

Encoding.UTF8.GetString(Convert.FromBase64String("U29tZSB2YWx1ZSB3aXRoIGEgCiBpbiBpdC4="));

这样就解决了问题。所以感谢您的支持。 (高拉夫·曼特里)

关于azure - 保存元数据时收到 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26355404/

相关文章:

c# - 如何检索 Azure blob 的内容?

Azure Blob Go lib使用TokenCredential访问blob api总是返回错误

azure - 如何在Azure上进行安全备份?

visual-studio - 在 Visual Studio 中,使用 Windows Azure 存储, "Remember Account Key"保存在哪里?

c# - 上传/获取 Blob - 在 .NET Core 中使用 Azure 存储帐户创建容器

azure - Azure 高级存储中的 Databricks 自动加载器文件通知模式

azure - Ingress Nginx 外部 IP 设置不起作用

Azure SQL 数据库 : 'NEWSEQUENTIALID' is not a recognized built-in function name when creating the table

c# - 将使用数据库部署在 Windows Azure 上的 ASP.NET 网站

c# - 用于带有 .NET 4.5 的 TableStorage 的 Azure SDK