【问题标题】:How to bind Azure function input parameter to storage account?如何将 Azure 函数输入参数绑定到存储帐户?
【发布时间】:2019-02-01 23:13:41
【问题描述】:

我正在尝试创建一个 Azure Function (.NET core) 以从存储帐户中检索 SaS,但我正在努力理解为什么我无法访问存储。

函数签名:

public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
[StorageAccount("StorageConnectionString")] StorageAccount storage,
ILogger log)

运行时出现这个错误:

错误索引方法“GetBlobSaS”Microsoft.Azure.WebJobs.Host: 无法将参数“storage”绑定到类型 StorageAccount。确保 绑定支持参数类型。如果您使用绑定 扩展(例如 Azure 存储、ServiceBus、计时器等)确保 您已经调用了您的扩展程序的注册方法 启动代码(例如 builder.AddAzureStorage()、builder.AddServiceBus()、 builder.AddTimers() 等)。

如果我直接创建存储帐户引用,它可以正常工作:

var storage = StorageAccount.NewFromConnectionString(System.Environment.GetEnvironmentVariable("StorageConnectionString"));

我有什么误解或做错了什么?

【问题讨论】:

    标签: c# azure azure-storage azure-functions


    【解决方案1】:

    您收到的错误是函数运行时不理解方法签名的错误。 [StorageAccount] 属性需要 CloudStorageAccount。

    所以把签名改成:

    [FunctionName("Function1")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
        [StorageAccount("StorageConnectionString")] CloudStorageAccount storage,
        ILogger log)
    {
    

    【讨论】:

    • 好的,但看起来您将其添加为绑定属性。并且它不是作为一种绑定,而是作为一种在使用存储绑定(如 QueueTrigger 或表绑定)时指定要使用的存储帐户的一种方式。
    • 也许我误解了文档。你是说我可以使用 blob 作为输入绑定,但不能获得直接存储引用?
    • 不确定,可能是我误解了。根据stackoverflow.com/questions/46879065/…,它应该可以工作。也许您应该将其更改为 [StorageAccount("StorageConnectionString")] CloudStorageAccount 存储?
    • 摇滚!就是这样!更新你的答案,快! :-)
    猜你喜欢
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 2018-09-04
    • 1970-01-01
    • 2022-12-21
    • 2021-12-23
    • 2018-07-17
    相关资源
    最近更新 更多