我正在使用“自定义”对象构建器(Autofac),因此我可以重复使用我在通用程序集中完成的许多类型的注册。当我运行在NServiceBus.Host.exe中托管的服务时,出现以下错误:
SerializationException未处理:
在程序集'Autofac,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 17863af14b0044da'中键入'Autofac.Core.Registration.ComponentNotRegisteredException'未标记为可序列化。
这对我来说似乎很奇怪,因为NServiceBus默认使用Autofac并且没有同样的问题。
我正在使用Autofac v 3.1.1和NServiceBus 4.0.3
答案 0 :(得分:3)
ComponentNotRegisteredException
确实没有标记为可序列化 - 便携式类库不支持SerializableAttribute
,而Autofac 3.0+是PCL。
我猜你遇到的更大的问题不是SerializationException
而是问题导致它 - 你的自定义代码中的某些东西没有注册,所以当某种类型得到解决时它无法构建,因此,Autofac抛出ComponentNotRegisteredException
和NServiceBus正在尝试序列化它。
我没有尝试解决序列化问题,而是开始查看ComponentNotRegisteredException
的来源,并专注于此。
答案 1 :(得分:2)
诊断这类问题的最简单方法是在Visual Studio中打开所有异常的中断并查看它第一次出现的位置。
9/10是初始化代码的问题。
答案 2 :(得分:0)
使用NServiceBus 4.4.2将NServiceBus.Distributor.Msmq(4.4.2)添加到旧解决方案时遇到了类似的错误。原来我忘了为新项目设置NSB许可证。尝试启动分发服务器直到我在构建输出中包含有效的License.xml文件:
未处理的异常:System.Runtime.Serialization.SerializationException:Type' Autofac.Core.DependencyResolutionException'在assembly&NSERviceBus.Core中,Version = 4.4.0.0,Culture = neutral 公钥= 9fc386479f8a226c'未标记为可序列化。