#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=’. Я отредактирую свой ответ, чтобы сделать его более ясным.