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

部署ServiceBus触发的Azure Function遇异常:LockToken未找到

问题:Azure ServiceBus触发函数部署后报错LockToken不存在

本地运行Visual Studio生成的基础ServiceBus触发Azure Function正常,部署到Azure后无响应,手动执行时出现以下错误:

2024-11-15T21:35:52Z   [Information]   Received HTTP response headers after 102.8069ms - 200
2024-11-15T21:35:52Z   [Information]   End processing HTTP request after 111.4159ms - 200
2024-11-15T21:35:52Z   [Information]   Call failed with gRPC error status. Status code: 'FailedPrecondition', Message: 'LockToken 00000000-0000-0000-0000-000000000000 not found.'.
2024-11-15T21:35:52Z   [Error]   Function 'FunctionSB', Invocation id 'c8144425-6892-40fc-a415-7f235d053743': An exception was thrown by the invocation.

已在环境变量中配置ServiceBus连接字符串,代码为默认生成的基础版本:

[Function(nameof(FunctionSB))]
public async Task Run(
            [ServiceBusTrigger("visionsystemmessages")]
            ServiceBusReceivedMessage message,
            ServiceBusMessageActions messageActions)
{
    string content = message.Body.ToString();

    // Complete the message
    await messageActions.CompleteMessageAsync(message);
    Console.WriteLine("Success start");
}

可能的原因及解决步骤

  • 重复完成消息导致锁令牌失效
    ServiceBusTrigger默认AutoComplete = true,函数执行完毕后会自动完成消息。此时代码中手动调用CompleteMessageAsync会触发二次完成,锁令牌已失效,从而报错。
    解决:修改触发器特性,关闭自动完成:

    [ServiceBusTrigger("visionsystemmessages", AutoComplete = false)]
    
  • 连接字符串权限不足
    确保ServiceBus连接字符串对应的SAS策略拥有Listen和Manage权限,完成消息操作需要Manage权限。

  • 手动触发的模拟消息无有效锁令牌
    Azure平台手动触发ServiceBus函数时生成的是模拟消息,无有效锁令牌,手动调用完成操作必然报错。测试时建议使用真实消息(比如通过ServiceBus Explorer发送消息到目标队列),或临时注释CompleteMessageAsync调用。

内容的提问来源于stack exchange,提问作者qwertyuiop lkjhgfdsa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 07:32:03