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

Azure Service Bus调用CancelScheduledMessageAsync无法捕获MessageNotFoundException

问题原因
  • 你使用的MessageNotFoundException属于已停止维护的旧版Azure Service Bus SDK包Microsoft.Azure.ServiceBus,你当前项目引用的是新版SDKAzure.Messaging.ServiceBus,二者的异常体系完全不同。
  • 新版SDK所有服务端返回的业务错误都会统一抛出ServiceBusException类型异常,具体错误类型通过Reason枚举属性区分,你看到的异常信息末尾的(MessageNotFound)就是对应的Reason值,没有单独的MessageNotFoundException类型,所以你现有的类型判断匹配失败,无法进入catch块。
解决方案

修改异常过滤逻辑,判断异常为ServiceBusException且Reason为ServiceBusFailureReason.MessageNotFound即可,修正后的代码如下:

try 
{
    await sender.CancelScheduledMessageAsync(sequenceNumber);
} 
catch (Azure.Messaging.ServiceBus.ServiceBusException ex) when (ex.Reason == Azure.Messaging.ServiceBus.ServiceBusFailureReason.MessageNotFound) 
{
    _logger.LogError("Ignored MessageNotFoundException");
}
补充说明

如果你的项目里同时引用了新旧两个SDK包,建议移除旧包Microsoft.Azure.ServiceBus的所有引用,避免类型混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:15:04