В эмуляторе хранения Microsoft отсутствуют заголовки с azure sdk 12.4.0

Я использую эмулятор хранилища Microsoft для разработки и, в частности, метод, который дает мне ошибку, - это exists (), ошибка связана с исключением нулевого указателя.

Глубоко заглянув в библиотеку, я обнаружил, что она запрашивает пару заголовков, а затем замечаю, что ответ конечной точки от хранилища BLOB-объектов Azure отличается от ответа от эмулятора хранилища Azure:

Из эмулятора:

curl -G http://127.0.0.1:10000/devstoreaccount1/default?restype=container -v -H 'x-ms-version: 2019-07-07'
* Connected to 127.0.0.1 (127.0.0.1) port 10000 (#0)
> GET /devstoreaccount1/default?restype=container HTTP/1.1
> Host: 127.0.0.1:10000
> User-Agent: curl/7.51.0
> Accept: */*
> x-ms-version: 2019-07-07
>
< HTTP/1.1 200 OK
< Transfer-Encoding: chunked
< Last-Modified: Mon, 24 Feb 2020 18:21:08 GMT
< ETag: "0x8D7B95651C1DCC0"
< Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
< x-ms-request-id: 63875efa-4883-45fc-8dee-2481781ae3de
< x-ms-version: 2019-07-07
< x-ms-lease-status: unlocked
< x-ms-lease-state: available
< x-ms-blob-public-access: container
< Date: Mon, 24 Feb 2020 20:28:26 GMT

Со склада:

curl -Gv https://account.blob.core.windows.net/default?restype=container -H 'x-ms-version: 2019-07-07'
> GET /roo?restype=container HTTP/1.1
> Host: account.blob.core.windows.net
> User-Agent: curl/7.51.0
> Accept: */*
> x-ms-version: 2019-07-07
>
< HTTP/1.1 200 OK
< Content-Length: 0
< Last-Modified: Mon, 24 Feb 2020 18:57:04 GMT
< ETag: "0x8D7B95B569707A4"
< Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
< x-ms-request-id: 9548781e-a01e-002f-0a51-eb0305000000
< x-ms-version: 2019-07-07
< x-ms-lease-status: unlocked
< x-ms-lease-state: available
< x-ms-has-immutability-policy: false
< x-ms-has-legal-hold: false
< x-ms-blob-public-access: container
< x-ms-default-encryption-scope: $account-encryption-key
< x-ms-deny-encryption-scope-override: false
< Date: Mon, 24 Feb 2020 20:29:01 GMT
<
* Curl_http_done: called premature == 0
* C

Как видите, в эмуляторе хранилища отсутствует пара заголовков.

Есть ли способ обойти это? как рекомендуется обернуть метод exists() самостоятельно, чтобы иметь возможность использовать эмулятор хранилища разработки?

Версии:

  • Эмулятор хранения: 5.10
  • SDK: 12.4.0
  • Язык: Java

Спасибо.

Примечание. Я удалил информацию как tls и ips из ответов curl.


person rahpuser    schedule 24.02.2020    source источник


Ответы (1)


Не могли бы вы вместо этого попробовать использовать Азурит и запустить его с параметром --loose, чтобы игнорировать неподдерживаемые заголовки?

https://github.com/Azure/Azurite/

person Jon Gallant    schedule 25.02.2020
comment
собираюсь попробовать это, однако в моей рабочей среде есть ограничения виртуализации, поэтому я не смогу использовать азурит, но попробую, если это сработает .. - person rahpuser; 25.02.2020