.NET Core 2.2使用RawRabbit发布消息出现Newtonsoft.Json方法缺失错误
异常原因
该报错属于Newtonsoft.Json版本不兼容问题:
RawRabbit 2.0.0-beta9编译时依赖低于12.0.1版本的Newtonsoft.Json,该版本中存在JsonSerializer.set_TypeNameAssemblyFormat方法。而.NET Core 2.2项目通常会隐式引入更高版本的Newtonsoft.Json(>=12.0.1),该版本已经废弃了TypeNameAssemblyFormat属性,替换为新的TypeNameAssemblyFormatHandling属性,运行时找不到旧方法就会抛出该异常。
解决办法
- 方案1:显式锁定Newtonsoft.Json兼容版本
在你的项目csproj文件中手动添加Newtonsoft.Json的11.0.2版本引用(该版本和RawRabbit 2.0.0-beta9完全兼容),覆盖项目隐式引入的高版本:
修改后执行NuGet包还原,重新编译运行项目即可解决问题。<PackageReference Include="Newtonsoft.Json" Version="11.0.2" /> - 方案2:自定义RawRabbit序列化器
如果你的项目必须使用更高版本的Newtonsoft.Json,可以自行实现RawRabbit的ISerializer接口,在自定义序列化逻辑中使用新的TypeNameAssemblyFormatHandling属性,避免调用已废弃的旧属性,在服务注册时将你的自定义序列化器注入替换默认实现即可。 - 方案3:升级RawRabbit到稳定正式版
你当前使用的2.0.0-beta9属于测试版本,RawRabbit后续的正式稳定版已经修复了Newtonsoft.Json高版本兼容问题,如果项目允许升级依赖,可将所有RawRabbit相关NuGet包升级到最新稳定版即可解决冲突。
内容的提问来源于stack exchange,提问作者mohammad azad
相关产品推荐
相关产品推荐

