1

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

4

3 回答 3

3

确实ComponentNotRegisteredException没有标记为可序列化 - 便携式类库不支持SerializableAttribute并且 Autofac 3.0+ 是 PCL。

我猜你遇到的更大SerializationException的问题与其说是导致它的问题 - 你的自定义代码中的某些内容没有注册,所以当某些类型得到解决时,它无法构建,因此,Autofac 抛出了这个问题,ComponentNotRegisteredException而 NServiceBus 正在尝试对其进行序列化。

我没有尝试解决序列化问题,而是开始查看源代码ComponentNotRegisteredException并专注于它。

于 2013-08-26T19:35:38.830 回答
2

诊断此类问题的最简单方法是在 Visual Studio 中打开所有异常的中断,并查看它第一次出现的位置。
9/10 是初始化代码有问题。

于 2013-08-26T22:43:40.410 回答
0

在使用 NServiceBus 4.4.2 将 NServiceBus.Distributor.Msmq (4.4.2) 添加到旧解决方案时,我遇到了类似的错误。原来我忘记为新项目设置 NSB 许可证。尝试启动分发器时抛出了这个,直到我在构建输出中包含了一个有效的 License.xml 文件:

未处理的异常:System.Runtime.Serialization.SerializationException:在程序集“NServiceBus.Core,版本=4.4.0.0,文化=中性 PublicKeyToken=9fc386479f8a226c”中键入“Autofac.Core.DependencyResolutionException”未标记为可序列化。

于 2017-11-14T00:27:34.747 回答