1

我有一个包含 4 个 NSB 主机端点的解决方案,这些端点是使用ServiceMatrix创建的,我想在一个传奇中使用它们。

我知道如何从命令转换为 Saga,并且在测试项目中运行良好。我不明白如何对已发布的事件做同样的事情,因为菜单选项不可用。是否可以使用ServiceMatrix做到这一点?

我尝试按照本教程手动实施更改,并观察转换为 Saga 时对我的测试项目所做的更改。

它构建正常,但在运行时在框架内引发错误:

System.InvalidOperationException 未处理 消息:在 mscorlib.dll 中发生“System.InvalidOperationException”类型的未处理异常

附加信息:没有可用的 IBus 实例,请配置一个并验证您没有在您的 saga 中定义自己的 Bus 属性,因为这隐藏了基类中的一个

我正在使用 VS2013 和 ServiceBus 5。

更新: 我从生成的代码中注释掉了继承的 IHandleMessages<> 接口和公共 IBus Bus 属性,它运行时没有出现此错误。我不乐意这样做,因为使用该工具的下一个设计更改将覆盖这些修复。

4

1 回答 1

1

在您的命令处理程序中,您通常有一个 IBus 类型的属性,该属性通过属性注入或构造函数注入注入到处理程序类中。

当您从命令处理程序移动到 Saga 时,您需要从处理程序中删除您的 IBus 属性。Saga 基类有一个您应该使用的 Bus 属性。这个属性是自动为你填充的,你不应该关心这个。这正是这个异常告诉你的。

于 2015-03-03T21:18:20.517 回答