Ориентация на более высокую версию предварительно загруженного пакета Nuget в функциях Azure - PullRequest
0 голосов
/ 03 мая 2018

Я пишу функцию Azure, которая использует Microsoft.WindowsAzure.Storage для проверки состояния регидратирующих больших двоичных объектов при их перемещении из архива в холодное состояние.

Для этого мне нужно проверить поле StandardBlobTier свойств BLOB-объектов. Я считаю, что это довольно новое свойство в пакете Microsoft.WindowsAzure.Storage nuget, и поэтому мне нужно настроить таргетинг на последнюю версию.

Я нацелился на версию 9.1.0 в моем project.json, но все равно получаю ошибку: 'BlobProperties' does not contain a definition for 'StandardBlobTier'. Какая версия Microsoft.WindowsAzure.Storage автоматически загружается в среду функций Azure и как мне ее переопределить?

Исходный код:

#r "System.IO"
#r "Newtonsoft.Json"
#r "Microsoft.WindowsAzure.Storage"

using System;
using System.Data.SqlClient;
using Newtonsoft.Json;
using Dapper;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using Microsoft.WindowsAzure.Storage.Shared.Protocol;

public static async Task Run(TimerInfo myTimer, TraceWriter log)
{    

    var archiveStorageAccount = CloudStorageAccount.Parse("{storageConnectionString}");

    CloudBlobClient blobClient = archiveStorageAccount.CreateCloudBlobClient();

    // Retrieve a reference to a container. 
    CloudBlobContainer container = blobClient.GetContainerReference(containerName);

    // Retrieve reference to a blob.
    CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);

    try
    {
        //Fill blob properties
        await blockBlob.FetchAttributesAsync();

        if (blockBlob.Properties.StandardBlobTier.HasValue && blockBlob.Properties.StandardBlobTier.Value == StandardBlobTier.Cool)
        {
            //Blob ready
        }

        //Blob still rehydrating
    }
    catch (StorageException ex) { throw; }
}

1 Ответ

0 голосов
/ 03 мая 2018

Похоже на последнюю версию Windows.Azure.Storage os 9.1.1: https://www.nuget.org/packages/WindowsAzure.Storage/9.1.1

Я также посмотрел документацию, и похоже, что StandardBlobTier является частью пространства имен: Microsoft.WindowsAzure.Storage.Blob. Не могли бы вы попробовать использовать это пространство имен вместо Microsoft.WindowsAzure.Storage?

Дополнительная документация по StandardBlobTier: https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.blob.standardblobtier?view=azure-dotnet

Обновление: Функции Azure используют Storage SDK версии 7.2.1.0, у которой нет нового свойства, однако внутренние разработчики подтвердили, что можно вызвать последнюю версию SDK хранилища, создав клиентский проект project.json и вызвав последнюю версию:

  Project.json:
{
  "frameworks": {
    "net46":{
      "dependencies": {
        "Microsoft.WindowsAzure.Storage": "9.0.0"
      }
    }
   }
}

В этом случае вам может потребоваться удалить «#r« Microsoft.WindowsAzure.Storage »»

...