Как проверить имена BLOB-объектов хранилища Azure - PullRequest
0 голосов
/ 18 октября 2018

Я реализую API для хранения файлов в хранилище BLOB-объектов Azure.

Я использую библиотеку Microsoft для проверки контейнера и имени BLOB-объекта.

NameValidator.ValidateContainerName(containerName);
NameValidator.ValidateBlobName(blobFullName);

Однако он возвращает некоторые имена как действительные, хотя их собственные документы Я знаю, что это не так, и когда я пытаюсь их сохранить, хранилище больших двоичных объектов возвращает 400 неверных запросов, как и ожидалось.Итак, помимо вопроса о том, почему библиотеки проверки MS неполны, как я могу выполнить остальную часть проверки в C #?В частности, теперь мне не удается выполнить часть

"некоторые символы ASCII или Unicode, такие как управляющие символы (от 0x00 до 0x1F, \ u0081 и т. Д.)"

Iесть файл с \ u0081 в имени файла.Какие оставшиеся недопустимые символы.Они указывают нам на документы IETF, но затем говорят, что «некоторые» из этих символов не разрешены?Какие?Только все управляющие символы?

Просто для ясности, вот часть, которая возвращает 400

CloudBlockBlob blob = documentContainer.GetBlockBlobReference(blobFullName);
                await blob.UploadFromStreamAsync(fileStream, token).ConfigureAwait(false);

Спасибо за вашу помощь!

Обновление: я добавил этот битлогики для проверки по крайней мере контрольных символов.Если я смогу получить что-то более надежное, я опубликую пиар-код против проверочного кода Microsoft

if (blobFullName.ToCharArray().Any(c => Char.IsControl(c))) {
    throw new HissyFitException();  // or do other stuff to fail validation
}

1 Ответ

0 голосов
/ 19 октября 2018

"некоторые символы ASCII или Unicode, такие как управляющие символы (от 0x00 до 0x1F, \ u0081 и т. Д.)"

Документ не понятен со словом "некоторые"может поднять проблему с документом на сайте azure doc и попросить их обновить документ, предоставив полный список из них.

...