升级到.NET 6和Azure Function 4.0后NServiceBus UseTransport失效求助
根因说明
NServiceBus.AzureFunctions.InProcess.ServiceBus 适配 Azure Function 4.0 的版本已经内置了 Azure Service Bus 传输层的默认初始化逻辑,在启动类中重复调用UseTransport<AzureServiceBusTransport>()会导致内部服务注册冲突,FunctionEndpoint依赖的核心对象未被正确初始化,因此调用Process时抛出空引用异常。
解决步骤
- 先确认所有 NServiceBus 相关依赖包已升级到适配 .NET 6 + Azure Function 4.0 的稳定版本,其中
NServiceBus.AzureFunctions.InProcess.ServiceBus需使用 3.0 及以上版本。 - 将启动类中原有的
UseTransport相关代码替换为ConfigureTransport方法调整传输配置,同时开启安装器实现拓扑自动搭建,示例代码如下:
// 开启安装器,NServiceBus启动时会自动创建队列、订阅等传输层拓扑资源 configuration.AdvancedConfiguration.EnableInstallers(); // 调整已内置注册的Azure Service Bus传输配置,无需重复调用UseTransport var transport = configuration.AdvancedConfiguration.ConfigureTransport<AzureServiceBusTransport>(); // 若需自定义连接字符串可保留该行,默认配置会自动读取AzureWebJobsServiceBus对应的连接字符串 transport.ConnectionString(@"AzureWebJobsServiceBus".GetConfig());
- 验证功能:启动项目后确认对应 Service Bus 的队列、主题等拓扑资源已自动创建,发送测试消息调用
functionEndpoint.Process确认无空引用异常且消息可正常处理。
内容的提问来源于stack exchange,提问作者rinesh
相关产品推荐
相关产品推荐

