属性“TableAttribute”是一个WebJobs属性,在.NETWorker、IsolatedProcess中不受支持

c#

我正在将一些功能从 netcore 3.1 迁移到 net5,以使用隔离模型。但是,我遇到了这种我尚未解决的不兼容问题;文档并没有让我找到解决方案。这是关于使用 Azure 函数在存储表中放置一行,此代码片段完美运行:

// netcoreapp3.1, works OK
[FunctionName("PlaceOrder")]
public static async Task<IActionResult> Run(
   [HttpTrigger(AuthorizationLevel.Anonymous, "post")] 
   OrderPlacement orderPlacement,
   
   [Table("Orders")] IAsyncCollector<Order> orders)
{
   await orders.AddAsync(new Order {
       PartitionKey = "US",
       RowKey = Guid.NewGuid().ToString(),
       CustomerName = orderPlacement.CustomerName,
       Product = orderPlacement.Product
   });
   return new OkResult();
}

在 net5 中执行此操作的尝试与以下内容非常相似:

// net5.0 approach
[Function("PlaceOrder")]
public static async Task<IActionResult> Run(

   [HttpTrigger(AuthorizationLevel.Anonymous, "post")]
   HttpRequestData req,

   [Table("Orders")] IAsyncCollector<Order> orders)
{
   var orderPlacement = await req.ReadFromJsonAsync<OrderPlacement>();

   await orders.AddAsync(new Order {
       PartitionKey = "US",
       RowKey = Guid.NewGuid().ToString(),
       CustomerName = orderPlacement.CustomerName,
       Product = orderPlacement.Product
   });
   return new OkResult();
}

但是表绑定行指示错误:属性 'TableAttribute' is a WebJobs attribute and not supported in the .NET Worker (Isolated Process)。- 什么是正确的等价物?

回答

您应该使用Microsoft.Azure.Functions.Worker.Extensions.*Azure 功能包 .net 5。

您可以阅读此官方文档以获取更多信息。

因此对于表绑定使用Microsoft.Azure.Functions.Worker.Extensions.Storage包并使用TableOutput属性进行绑定。

如下图所示:

    [Function("TableFunction")]
    [TableOutput("OutputTable", Connection = "AzureWebJobsStorage")]
    public static MyTableData Run([QueueTrigger("table-items")] string input,
        [TableInput("MyTable", "MyPartition", "{queueTrigger}")] MyTableData tableInput,
        FunctionContext context)
    {
        var logger = context.GetLogger("TableFunction");

        logger.LogInformation($"PK={tableInput.PartitionKey}, RK={tableInput.RowKey}, Text={tableInput.Text}");

        return new MyTableData()
        {
            PartitionKey = "queue",
            RowKey = Guid.NewGuid().ToString(),
            Text = $"Output record with rowkey {input} created at {DateTime.Now}"
        };
    }

您可以在此处查看各种受支持绑定的示例。


以上是属性“TableAttribute”是一个WebJobs属性,在.NETWorker、IsolatedProcess中不受支持的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>