如何将Azure函数输入参数绑定到存储帐户?

时间:2019-02-01 13:57:11

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

我正试图创建一个Azure Function(.NET核心)以从存储帐户中检索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:   无法将参数“存储”绑定到类型StorageAccount。确保   绑定支持参数类型。如果您使用绑定   扩展程序(例如Azure存储,ServiceBus,计时器等),请确保   您已在您的扩展中调用了注册方法   启动代码(例如builder.AddAzureStorage(),builder.AddServiceBus(),   builder.AddTimers()等)。

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

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

我误解或做错了什么?

1 个答案:

答案 0 :(得分:3)

您得到的错误是Function运行时不理解方法签名的错误。 [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)
{