从 C# Azure 函数访问 Azure 存储
Access Azure Storage from C# Azure Function
我正在尝试通过 Azure 函数访问 Blob 存储中的内容。我有以下内容:
#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 Functions 时遗漏了一些重要的东西,因为从 Azure 函数中引入 namespaces/packages 来使用 Azure 应该不是一个挑战。
非常感谢!
在c# 脚本函数中,您不需要初始化blob 客户端来读取blob。 Azure 函数提供 Blob 绑定到 read/write blob,查看此文档:Blob Input - example.
首先转到您的功能集成,如下图所示设置它。有了这个,只需将 inputBlob
绑定到流式传输以读取内容或绑定到 CloudBlockBlob
类型,然后只需使用 CloudBlockBlob
方法即可。
并且路径支持绑定到容器,在函数中只绑定到CloudBlobContainer
类型。
下面是我读取文本文件的测试代码。
#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}");
}
希望这对您有所帮助,如果您还有其他问题,请随时告诉我。
我正在尝试通过 Azure 函数访问 Blob 存储中的内容。我有以下内容:
#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 Functions 时遗漏了一些重要的东西,因为从 Azure 函数中引入 namespaces/packages 来使用 Azure 应该不是一个挑战。
非常感谢!
在c# 脚本函数中,您不需要初始化blob 客户端来读取blob。 Azure 函数提供 Blob 绑定到 read/write blob,查看此文档:Blob Input - example.
首先转到您的功能集成,如下图所示设置它。有了这个,只需将 inputBlob
绑定到流式传输以读取内容或绑定到 CloudBlockBlob
类型,然后只需使用 CloudBlockBlob
方法即可。
并且路径支持绑定到容器,在函数中只绑定到CloudBlobContainer
类型。
下面是我读取文本文件的测试代码。
#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}");
}
希望这对您有所帮助,如果您还有其他问题,请随时告诉我。