Как считывать данные из большого двоичного объекта Azure с помощью ключа SAS в .net

#c# #.net #azure #azure-blob-storage

Вопрос:

Здравствуйте.Я пытаюсь получить доступ к большому двоичному объекту Azure с помощью маркера SAS, чтобы получить данные из большого двоичного объекта, это то, что я пытался сделать.

Я очень новичок в этом, поэтому понятия не имею, как это должно работать

это то, что я пробовал до сих пор.

не могли бы вы подсказать, если это правильный способ получить данные из большого двоичного объекта и как устранить эту ошибку, которую я получаю, пожалуйста

Ошибка заключается в

введите описание изображения здесь

Это код, написанный sofar

 namespace BlobQuickstartV12
{
    class Program
    {
        static async Task Main()
        {
            const string sasToken = "sasToken";
          
                var blobUri = new System.Uri("https://xx.blob.xx.xx.net/xxxx?sp=ralamp;st=2021-07-28T22:29:14Zamp;se=2021-08-26T06:29:14Zamp;spr=httpsamp;sv=2020-08-04amp;sr=camp;sig=ZQ+l5yZ2JpEb7TwnWGBNz9hSjGTZr3ZarSPaQ1ssz48=");

                var blobUriBuilder = new System.UriBuilder(blobUri)
                {
                    Query = sasToken
                };

                var authorizedBlobUri = blobUriBuilder.Uri;
                var blobClient = new Azure.Storage.Blobs.BlobClient(authorizedBlobUri);

            
            var getBlobResponse = await blobClient.DownloadContentAsync(); //ERROR HERE
            Console.WriteLine("Read blob successfully", getBlobResponse.Value);

          
        }
    }
}
 

Ошибка

 Azure.RequestFailedException: 'Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:cbde76c1-b01e-008e-657c-aa7496000999
Time:2021-09-15T21:55:49.0166554Z
Status: 403 (Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.)
ErrorCode: AuthenticationFailed

Additional Information:
AuthenticationErrorDetail: Signature not valid in the specified time frame: Start [Wed, 28 Jul 2021 22:29:14 GMT] - Expiry [Thu, 26 Aug 2021 06:29:14 GMT] - Current [Wed, 15 Sep 2021 21:55:49 GMT]

Content:
<?xml version="1.0" encoding="utf-8"?><Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:cbde76c1-b01e-008e-657c-aa7496000000
Time:2021-09-15T21:55:49.0166554Z</Message><AuthenticationErrorDetail>Signature not valid in the specified time frame: Start [Wed, 28 Jul 2021 22:29:14 GMT] - Expiry [Thu, 26 Aug 2021 06:29:14 GMT] - Current [Wed, 15 Sep 2021 21:55:49 GMT]</AuthenticationErrorDetail></Error>

Headers:
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: cbde76c1-b01e-008e-657c-aa7496000000
x-ms-error-code: AuthenticationFailed
Date: Wed, 15 Sep 2021 21:55:48 GMT
Content-Length: 544
Content-Type: application/xml
'
 

Любые предложения, пожалуйста

Спасибо Р

Ответ №1:

Вы должны иметь возможность инициализировать BlobClient с помощью «AzureSasCredential», например:

 var client = new BlobClient(new Uri("https://xx.blob.xx.xx.net/xxxx"), new AzureSasCredential("sp=ralamp;st=2021-07-28T22:29:14Zamp;se=2021-08-26T06:29:14Zamp;spr=httpsamp;sv=2020-08-04amp;sr=camp;sig=ZQ+l5yZ2JpEb7TwnWGBNz9hSjGTZr3ZarSPaQ1ssz48=")); 
 

Редактировать:

Я только что прочитал ошибку, срок действия вашего ключа SAS истек:

Подпись недействительна в указанные сроки: Начало [Ср, 28 июля 2021 года 22:29:14 по Гринвичу] — Истечение срока действия [Чт, 26 августа 2021 года 06:29:14 по Гринвичу]

Комментарии:

1. Спасибо, Фил, когда я добавляю строку выше и изменяю новый ключ, он возвращает меня с новой ошибкой:Система. Исключение аргумента: «Вы не можете использовать AzureSasCredential, если URI ресурса также содержит подпись общего доступа: <<MYURI><MYURI>> Вы можете удалить подпись общего доступа, создав BlobUriBuilder, установив BlobUriBuilder. Sas равен нулю и вызывает BlobUriBuilder. Тури.’

2. Мне дали этот URI, я не могу ничего изменить/удалить из URI, как указано в ошибке.

3. Привет Auo, убедитесь, что вы указываете домен только в URI, а не в запросе (все, что после знака вопроса, содержащего SAS). Итак, из приведенного выше примера URI = ‘ xx.blob.xx.xx.net/xxxx » и азуресаскреденциальный = ‘sp=ralamp;st=2021-07-28T22:29:14Zamp;se=2021-08-26T06:29:14Zamp;spr=httpsamp;sv=2020-08-04amp;sr=camp;sig=ZQ+l5yZ2JpEb7TwnWGBNz9hSjGTZr3ZarSPaQ1ssz48=’. Я отредактирую свой ответ, чтобы сделать его более ясным.