You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Worker(独立进程)中DurableClientAttribute不支持问题求助

解决AZFW0001错误:.NET Isolated Process中DurableClientAttribute不支持的问题

问题原因

.NET Worker(隔离进程)模式下,Azure Functions不支持WebJobs系列属性(包括DurableClientAttribute),这类属性仅适用于传统的In-Process运行模式。同时你的代码还存在参数绑定错误——QueueTrigger被错误绑定到了IDurableOrchestrationClient参数上,而非实际的队列消息参数。

解决方案

1. 确保安装正确的NuGet包

确认项目已安装适配隔离进程的Durable扩展包:

Install-Package Microsoft.Azure.Functions.Worker.Extensions.DurableTask

2. 配置Durable Task服务

在Program.cs中注册Durable Task扩展,让依赖注入系统能够提供Durable客户端实例:

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureServices(services =>
    {
        services.AddDurableTask();
    })
    .Build();

host.Run();

3. 修改函数代码

移除DurableClientAttribute,修正参数绑定,并使用隔离模式支持的IDurableClient接口(替代IDurableOrchestrationClient,官方推荐):

[Function("OrdersQueueFunction")]
public async Task Run(
    [QueueTrigger("bpbordersqueue")] string orderData,
    IDurableClient durableClient,
    ILogger log)
{
    log.LogInformation($"C# Queue trigger function processed: {orderData}");
    var orderValue = JsonSerializer.Deserialize<Order>(orderData);
    await orderService.SaveData(orderValue);

    if (orderValue.Status == Order.OrderStatus.Pending)
    {
        // 注意:确保requestMetadata变量已正确定义并赋值
        string instanceId = await durableClient.StartNewAsync("OrchestrateRequestApproval", requestMetadata);
        log.LogInformation($"Durable Function Orchestration started: {instanceId}");
    }
}

关键说明

  • 隔离进程模式下,依赖注入系统会自动注入IDurableClient实例,无需通过属性标记。
  • 若仍需使用IDurableOrchestrationClient,可以直接替换IDurableClient,两者在功能上兼容,但官方更推荐使用IDurableClient以适配未来的API更新。

内容的提问来源于stack exchange,提问作者Karthikeyan VK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:35:26