Ошибка компиляции при попытке сослаться на CloudBlockBlob в вызванной функции blobstorage - PullRequest
0 голосов
/ 25 сентября 2018

Вот мой код функции.

#r "Microsoft.WindowsAzure.Storage.Blob"

public static async Task Run(CloudBlockBlob uploadedVideo, string name, CloudBlockBlob processedVideo, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {uploadedVideo.Length} Bytes");
    var fileEntry = new 
    {
        fileName = $"uploaded-videos/{name}",
        fileType = "video",
        correlationId = Guid.NewGuid()
    };
    await processedVideo.StartCopyAsync(uploadedVideo);  
    await uploadedVideo.DeleteIfExistsAsync();
}

и вот моя функция. Json

{
  "bindings": [
    {
      "name": "uploadedVideo",
      "type": "blobTrigger",
      "direction": "in",
      "path": "uploaded-videos/{name}",
      "connection": "AzureWebJobsStorage"
    },
    {
      "type": "blob",
      "name": "processedVideo",
      "path": "processed-videos/{name}-{rand-guid}",
      "connection": "AzureWebJobsStorage",
      "direction": "out"
    }
  ]
}

А вот ошибка, которую он продолжает выдавать, когда я запускаю эту функцию.

2018-09-25T07: 34: 10,813 [Ошибка] Ошибка компиляции функции 2018-09-25T07: 34: 10,982 [Ошибка] BlobTriggerCSharp.csx (2,1): ошибка CS0006: файл метаданных«Microsoft.WindowsAzure.Storage.Blob» не найден 2018-09-25T07: 34: 11.040 [Ошибка] BlobTriggerCSharp.csx (4,30): ошибка CS0246: не удалось найти тип или имя пространства имен «CloudBlockBlob» (вам не хватает директивы using или ссылки на сборку?) 2018-09-25T07: 34: 11.128 [Ошибка] BlobTriggerCSharp.csx (4,73): ошибка CS0246: не удалось найти тип или имя пространства имен 'CloudBlockBlob' (являютсявы пропустили директиву using или ссылку на сборку?)

1 Ответ

0 голосов
/ 25 сентября 2018

Нет сборки Microsoft.WindowsAzure.Storage.Blob, это пространство имен, включенное в Microsoft.WindowsAzure.Storage.Сборка и пространство имен должны быть использованы, как показано ниже.

#r "Microsoft.WindowsAzure.Storage"

using Microsoft.WindowsAzure.Storage.Blob;

И CloudBlockBlob не может напрямую получить свойство Length, нам нужно сначала получить свойства BLOB-объекта.

await uploadedVideo.FetchAttributesAsync();
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {uploadedVideo.Properties.Length} Bytes");
...