Azure Storage Explorer не отображает все BLOB-объекты - PullRequest
1 голос
/ 14 мая 2019

Когда я открываю контейнер BLOB-объектов в обозревателе хранилищ Azure, иногда в нем перечисляется только подмножество BLOB-объектов, содержащихся в контейнере.Как сделать так, чтобы все они были перечислены?Я попытался обновить, в поисках префикса имени BLOB-объекта , ничего не помогло.К сожалению, исходный код пока недоступен , и я не нашел никакой информации о его внутренней работе, кроме того, что это приложение Electron, поэтому было бы трудно разобраться в проблеме с этой стороны.

Я не могу воспроизвести проблему, она всплывает время от времени.В настоящее время я играю с контейнером, в котором Storage Explorer перечисляет только один файл размером 169 КБ и отображает « с 1 по 1 из 1 кэшированных элементов » внизу, но когда я нажимаю кнопку «Статистика папки» вНа панели инструментов в окне «Действия» отображается « Статистика для devstoreaccount1 / palecblobcontainer: 5 BLOB-объектов; 588 270 байт (не включая моментальные снимки) ».

Когда я перечисляю BLOB-объекты, используяAPI REST , я получаю их все .Т.е. я просматриваю http://127.0.0.1:10000/devstoreaccount1/palecblobcontainer?restype=container&comp=list в своем браузере, и все 5 больших двоичных объектов перечислены в результирующем XML.Я получил URL-адрес контейнера, щелкнув «Копировать URL-адрес» на панели инструментов «Storage Explorer», удалив путь к BLOB-объекту и добавив строку запроса.

Я наблюдал это не только с помощью Storage Emulator, но даже фактического Azure.Место хранения.Каждый раз, когда я сталкивался с этой проблемой, она сохранялась даже после перезапуска Storage Explorer и удаления %AppData%\StorageExplorer и даже после отсоединения и повторного присоединения учетной записи хранения , поэтому кажется, что кэширование не является проблемой.Я обнаружил похожую проблему на GitHub , связанную с разбиением на страницы, но в моем случае наблюдаемые значения являются постоянными и очень низкими, так что все BLOB-объекты помещаются на одной странице.

Как создать хранилищеПроводник снова работает, как только он перестает отображать некоторые капли?Если это ошибка, есть ли обходной путь?Есть ли разумный способ, чтобы я мог глубже вникнуть в проблему?Я использую Storage Explorer 1.8.1 в Windows 10.

1 Ответ

1 голос
/ 04 июня 2019

Storage Explorer использует REST API под капотом. Когда контейнер BLOB-объектов открывается или обновляется, путь запроса равен /devstoreaccount1/palecblobcontainer?restype=container&comp=list&maxresults=1000&delimiter=%2F.

В моем случае проблема заключается в части delimiter=%2F, где %2F - косая черта в кодировке URL. Без этого параметра ответ API содержит все большие двоичные объекты, но если этот параметр включен, возвращаются только те, которые перечислены в Storage Explorer.

Когда я загружаю другой файл (произвольный desktop.ini) в корень контейнера, он выглядит следующим образом:

Когда я удаляю BLOB-объект .safe, появляется список 404 (и файл desktop.ini по-прежнему указан). Когда я удаляю 404, 404.safe перечислен. Когда я переименовываю 404.safe в 404.safe_, в списке появляется chci-vuz-skoda.

При перечислении папки, содержащей подпапку с пустым именем, API не выводит список папки с пустым именем и отображает ее первый большой двоичный объект. Это, вероятно, ошибка API REST (или некоторый код под). Я не уверен, является ли это ошибкой списка или пустые сегменты должны вызывать сбой загрузки такого большого двоичного объекта. Мне не удалось создать такой BLOB-объект с помощью Storage Explorer, и документация об ограничениях имен BLOB-объектов не говорит о таких ограничениях.

Для работы с BLOB-объектами в пустой папке с именем с помощью Storage Explorer переименовывайте их туда и обратно. Это перемещает их из папки с пустыми именами в родительскую папку (т. Е. Разделяет последовательности косых черт в имя капли). Однако это меняет имя большого двоичного объекта, поэтому необходимо обновить сохраненные копии имени большого двоичного объекта и любой код, основанный на имени большого двоичного объекта.

Я наблюдал запросы и ответы, используя Fiddler . Обозреватель хранилища> Изменить> Настроить прокси> Использовать пользовательские настройки прокси (URL: http://127.0.0.1, порт: 8888) и запустить Fiddler. Существует также Storage Explorer> Справка> Переключить инструменты разработчика (F12), который отображает инструменты разработчика Chrome для приложения, но на вкладке Сеть не отображаются запросы, и я не хотел копать глубже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...