You need to enable JavaScript to run this app. NServiceBus Feature中获取RecoverabilitySettings报字典无对应键如何解决
优惠活动
大模型
产品
解决方案
定价
更多

NServiceBus Feature中获取RecoverabilitySettings报字典无对应键如何解决

异常原因
  • 报错的根本原因是RecoverabilitySettings是NServiceBus v8版本才新增的配置类,你当前使用的v7.4.6版本的配置字典中根本没有这个键,自然会抛出找不到对应键的异常。
  • 你参照v7升v8的API调整方案修改代码,但没有同步升级NServiceBus的框架版本,是问题的核心诱因。另外v7版本中ErrorsNotifications.MessageSentToErrorQueue只是标记了过时,仍可正常运行,该API会在v8版本才被正式移除。
解决方案

你可以根据自己的版本计划选择以下两种处理方案:

方案1:继续使用NServiceBus v7.4.6

直接沿用原有旧版实现即可,不需要调整代码,过时警告不影响功能运行:

public class MyOldFeature : Feature
{
    protected override void Setup(FeatureConfigurationContext context)
    {
        // 可添加下面的注释消去过时警告
        // #pragma warning disable CS0618
        var notifications = context.Settings.Get<Notifications>();
        notifications.Errors.MessageSentToErrorQueue += this.OnMessageSentToErrorQueue;
        // #pragma warning restore CS0618
    }

    private void OnMessageSentToErrorQueue(object sender, FailedMessage message)
    {
        Console.WriteLine(message.MessageId);
    }
}

方案2:升级到NServiceBus v8+使用新API

如果要使用新的RecoverabilitySettings相关API,需要先完成两个前置升级:

  1. 把项目的运行时从.NET Core 3.1升级到.NET 6或更高版本(NServiceBus v8最低要求.NET 6)
  2. 把所有NServiceBus相关NuGet包(包括NServiceBus核心包、AzureServiceBusTransport传输包等)全部升级到v8或以上匹配版本
    完成升级后,你现有的新Feature代码就可以正常运行,不会再抛出找不到键的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 19:36:03