NServiceBus IoC序列化异常

时间:2013-08-26 15:44:06

标签: c# .net-4.0 nservicebus autofac

我正在使用“自定义”对象构建器(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

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'未标记为可序列化。