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

Kru*_*lur 3 c# azure azure-storage azure-functions

我正在尝试创建一个 Azure 函数(.NET 核心)来从存储帐户中检索 SaS,并且正在努力理解为什么我无法访问存储。

函数签名:

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

运行时出现这个错误:

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

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

var storage = StorageAccount.NewFromConnectionString(System.Environment.GetEnvironmentVariable("StorageConnectionString"));
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ade 5

您收到的错误是函数运行时不理解方法签名的错误。[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)
{
Run Code Online (Sandbox Code Playgroud)