Сбой Azure CloudBlob SetMetadata приводит к ошибке «Указанные метаданные недействительны. В них есть недопустимые символы». - PullRequest
0 голосов
/ 30 июля 2011

Я почти уверен, что это ограничение Windows Azure SDK (с использованием последней версии 1.4), но должен быть способ обойти это без использования ручного REST ...

Код:

CloudBlob blob = container.GetBlobReference(url); // works
blob.UploadByteArray(bytes); // works
blob.Metadata["test"] = "public, max-age=259200"; // works
// FAILS with "The metadata specified is invalid. It has characters that are not permitted."
blob.Metadata["x-ms-blob-cache-control"] = "public, max-age=259200";
blob.SetMetadata(); // FAILS due to the 2nd meta data

Из моих тестов довольно ясно, что клиент взрывается из-за этих черточек '-', но я не могу придумать никакого способа обойти это.Настройка управления кешем очень важна, и это обычная операция, которая сбивает меня с толку, почему я не могу найти никого другого, сообщающего об этой проблеме.

Я также пытался кодировать данные, что технически не должно быть необходимым,но в отчаянии я все равно это сделал.Идеи?

1 Ответ

3 голосов
/ 30 июля 2011

В конце концов, это оказалось глупым ограничением SDK, есть определенное свойство, которое, в свою очередь, устанавливает эти метаданные для вас ... Я не против иметь это свойство в качестве помощника, но я не вижу причин, почему установка мета напрямую не должна работать.

blob.Properties.CacheControl = "public, max-age=259200";
blob.UploadByteArray(bytes);
...