.NET Core 3.1 配置NServiceBus对接MySql报port关键字不支持错误
错误原因
- 核心配置不匹配:你在NServiceBus中为持久化层配置了MySql方言的SqlPersistence,但传输层选择了SqlServerTransport,该组件是专为SQL Server设计,内部采用SQL Server专属的连接字符串解析逻辑,无法识别MySql连接字符串中的
port、AllowUserVariables等特有参数,所以抛出参数不支持的错误。 - EF Core可正常连接的原因:你的EF Core使用了MySql专属驱动(如MySqlConnector、Pomelo.EntityFrameworkCore.MySql),可正确解析MySql格式的连接字符串,和NServiceBus传输层误用SQL Server组件的场景无关。
解决思路
- 方案1:统一技术栈使用MySql:若整套服务都基于MySql搭建,将
SqlServerTransport替换为NServiceBus的MySql专属传输实现,为持久化和传输层传入同一个MySql连接字符串即可,两者都会通过MySql驱动解析参数,不会再出现识别错误。 - 方案2:拆分不同组件的连接配置:若确实需要传输层用SQL Server、持久化用MySql,给两个组件分别传入对应数据库格式的连接字符串:给SqlPersistence传入原MySql连接字符串,给SqlServerTransport传入符合SQL Server规范的连接字符串(SQL Server端口通过
server=地址,端口号格式配置,无需单独port参数)。 - 校验依赖:确认项目已安装MySql对应的NServiceBus扩展包以及MySqlConnector驱动包,避免驱动缺失导致的二次解析问题。
内容的提问来源于stack exchange,提问作者mkcast
相关产品推荐
相关产品推荐

