Доступ к хранилищу Azure из C # Azure - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь получить доступ к содержимому из хранилища BLOB-объектов из функции Azure. У меня есть следующее:

#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;

public static async Task<HttpResponseMessage> Run(HttpRequest req, ILogger log)
{   
    string path = req.Query["path"];   

    string storageConnectionString = "...";
    CloudStorageAccount blobAccount = CloudStorageAccount.Parse(storageConnectionString);
    CloudBlobClient blobClient = blobAccount.CreateCloudBlobClient();
    CloudBlobContainer blobContainer = blobClient.GetContainerReference("content");
    CloudBlockBlob cloudBlockBlob = blobContainer.GetBlockBlobReference(path);*

    return new HttpResponseMessage(HttpStatusCode.OK) {
        Content = /* to do - content of blob */
    };    
}

Однако я пытаюсь сказать, что функция распознает пространство имен Microsoft.WindowsAzure.Storage:

2019-11-07T09:59:57.729 [Error] run.csx(7,17): error CS0234: The type or namespace name 'WindowsAzure' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)

Я чувствую, что упускаю что-то важное в моейпонимание функций Azure, так как не должно быть такой сложной задачей - извлекать пространства имен / пакеты для работы с Azure из функции Azure.

Большое спасибо!

1 Ответ

0 голосов
/ 07 ноября 2019

В функции сценария c # вам не нужно инициализировать клиент BLOB для чтения BLOB-объектов. Функция Azure обеспечивает привязку BLOB-объекта к объекту BLOB-объекта для чтения / записи. Проверьте этот документ: Ввод BLOB-объекта - пример .

Сначала перейдите к функции интеграции, установите ее, как показано на рисунке ниже. При этом просто привяжите inputBlob к потоку для чтения содержимого или привязайте к типу CloudBlockBlob и просто используйте метод CloudBlockBlob.

И путь поддерживает привязку к контейнеру, а в функции просто привязка к типу CloudBlobContainer.

enter image description here

Ниже приведен мой тестовый код для чтения текстового файла.

#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.IO;
using System.Collections.Generic;

public static void Run(HttpRequest req, Stream inputBlob,ILogger log)
{
    StreamReader reader = new StreamReader(inputBlob);
    string  oldContent = reader.ReadToEnd();
    log.LogInformation($"oldContent:{oldContent}");  
}

enter image description here

Надеюсь, это поможет вам, если у вас все еще есть другие проблемы, пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...