Настройка правил CORS с использованием Azure.Хранение.Большие двоичные объекты

#azure #cors #azure-storage #azure-blob-storage

#azure #cors #azure-хранилище #azure-blob-хранилище

Вопрос:

Я пытаюсь перейти с устаревшего Microsoft.WindowsAzure.Storage на Azure.Storage . В моем приложении API у меня есть метод, который я время от времени вызываю для программной установки CORS правил в моей учетной записи хранилища Azure.

Как мне добавить CORS правила к свойствам с помощью new Azure.Storage.Blobs ?

Мой исходный код, который работал, Microsoft.WindowsAzure.Storage выглядит следующим образом. В следующем коде _client это экземпляр CloudBlobClient . Я понимаю, что Azure.Storage.Blobs мне нужно использовать BlobServiceClient то, что я сейчас делаю, но, как я уже сказал, некоторые части следующего кода не работают, потому что некоторых методов / свойств больше нет. Я уверен, что они перемещены куда-то еще, но я не смог выяснить, где.

 public async Task ConfigureCors()
{
    var ALLOWED_CORS_ORIGINS = new List<String> { "http://localhost:49065", "https://myappdomain.com", "https://www.myappdomain", "https://login.microsoftonline.com" };
    var ALLOWED_CORS_HEADERS = new List<String> { "x-ms-meta-qqfilename", "Content-Type", "x-ms-blob-type", "x-ms-blob-content-type" };
    const CorsHttpMethods ALLOWED_CORS_METHODS = CorsHttpMethods.Get | CorsHttpMethods.Delete | CorsHttpMethods.Put | CorsHttpMethods.Options;
    const int ALLOWED_CORS_AGE_DAYS = 5;

    var properties = await _client.GetServicePropertiesAsync();

    properties.DefaultServiceVersion = "2013-08-15";
    await _client.SetServicePropertiesAsync(properties);

    var addRule = true;
    if (addRule)
    {
       var ruleWideOpenWriter = new CorsRule()
       {
           AllowedHeaders = ALLOWED_CORS_HEADERS,
           AllowedOrigins = ALLOWED_CORS_ORIGINS,
           AllowedMethods = ALLOWED_CORS_METHODS,
           MaxAgeInSeconds = (int)TimeSpan.FromDays(ALLOWED_CORS_AGE_DAYS).TotalSeconds
       };
       properties.Cors.CorsRules.Clear();
       properties.Cors.CorsRules.Add(ruleWideOpenWriter);
       await _client.SetServicePropertiesAsync(properties);
    }
}
  

Похоже, я могу получить и установить свойства, изменив _client.GetServicePropertiesAsync() _client.GetPropertiesAsync() , но DefaultServiceVersion их больше нет. Также я не могу найти правильный способ установки CORS правил.

Я был бы признателен за ваши предложения. Спасибо!

Ответ №1:

Вы можете использовать приведенный ниже код при использовании Azure.Storage.Blobs (я использую метод синхронизации, пожалуйста, измените его на метод async, если вам это нужно):

         var properties = blobServiceClient.GetProperties().Value;

        properties.DefaultServiceVersion = "xxx";

        BlobCorsRule rule = new BlobCorsRule();
        rule.AllowedHeaders= "x-ms-meta-qqfilename,Content-Type,x-ms-blob-type,x-ms-blob-content-type";
        rule.AllowedMethods = "GET,DELETE,PUT,OPTIONS";
        rule.AllowedOrigins = "http://localhost:49065,https://myappdomain.com,https://www.myappdomain,https://login.microsoftonline.com";
        rule.MaxAgeInSeconds = 3600; // in seconds

        properties.Cors.Add(rule);

        blobServiceClient.SetProperties(properties);
  

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

1. Работает отлично. Спасибо!