如何使用Azure Functions Binder查询运行时指定的Table?

How to use Azure functions Binder to query Table specified at runtime?

通过使用 table 名称指定 Table 属性,将 Azure 函数绑定到 table 很简单:

[FunctionName("TableInput")]
public static void Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req, 
    [Table("MyTable")] MyTable table, 
    ILogger log)
{
    ...
}

但是如果 table 名称是参数化的,即函数从 table 读取在 HTTP 请求中传递的名称:

[FunctionName("queryById")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", Route = "{tableName}")] HttpRequest req,
    Binder binder, 
    ILogger log,
    string tableName)

我想做的是使用 TableAttribute:

绑定 table
var attributes = new Attribute[]
{    
    new TableAttribute(collectionName), 
};

但看起来 IBinder 接口不支持 table 绑定以从 table 读取数据。我无法将 BindAsync 与 CloudTable 类型一起使用以获得对 Table 的引用。我可以绑定到 Table 实体,但这仅适用于使用 IAcyncCollector 将数据插入 table 的目的。

有没有办法通过在运行时指定 table 名称将 Azure 函数动态绑定到 table?

如果tableName是您示例中所说的Http触发器的路由,只需使用路由参数指定绑定即可。

[Table("{tableName}")] CloudTable table

而且我在使用 IBinderBinder

时没有遇到任何错误
var table = await binder.BindAsync<CloudTable>(new TableAttribute($"{tableName}"));