背景:
一个订阅者项目运行正常,但另一个订阅者项目失败并出现此错误:
未处理的异常:System.InvalidOperationException:在扫描的程序集中找不到端点配置。当NServiceBus无法加载包含IConfigureThisEndpoint的程序集时,通常会发生这种情况。尝试使用appsetting键在NServiceBus.Host.exe.config中显式指定类型:EndpointConfigurationTypeScanned path: my path here 在NServiceBus.Host.Program.ValidateEndpoints(IEnumerable`1 endpointConfigurationTypes) 在NServiceBus.Host.Program.GetEndpointConfigurationType() 在NServiceBus.Host.Program.Main(String [] args)
我怀疑问题必然在于订户的NServiceBus发布者消息DLL无法启动。但是,我不知道如何弄清楚这有什么问题。我看过了:
我在这里疯了,已经烧了差不多一天试图让这个工作。任何帮助都会受到大力赞赏。
答案 0 :(得分:13)
嗯,异常会告诉你它究竟是什么。 它正在寻找一些实现 IConfigureThisEndpoint 的类。
我想到了三件事:
NServiceBus.Host.exe.config 文件应如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" />
</startup>
<runtime>
<loadFromRemoteSources enabled="true" />
</runtime>
</configuration>
我认为“无端点配置...”异常似乎因为许多不同的原因而被抛出,并且它掩盖了实际原因。有人知道诊断这类问题的好方法吗?
最后一点也发生在我身上。它重命名我的程序集后没有清理项目目录。 NServiceBus然后遍历所有文件并找到旧的命名程序集和新命名的程序集,并以相同的异常结束。
请注意,如果包含相同接口实现的第二个程序集位于子文件夹内,则可能会导致错误。这种行为引起了一些调试问题,因为我以前将我的文件作为短期备份复制到子文件夹...
[编辑]
编辑以在此主题中添加其他作者的其他项目以获得完整性。
[编辑2]
添加了有关NServiceBus.Host.exe.config
。
答案 1 :(得分:4)
在我的情况下,我有这个例外,因为我使用了来自NServiceBus安装路径的 NServiceBus.Host.exe 。将其更改为bin / debug copy(在两种情况下:服务器和客户端),程序开始正确。 项目属性 - &gt;调试 - &gt;启动外部程序 - &gt; bin / debug文件夹中NServiceBus.Host.exe的完整路径
答案 2 :(得分:1)
确定一个真正的脸庞时刻 - 失败的订阅者引用的消息DLL只是延迟签名。这导致它失败并显示“No endpoint configuration found ...”错误。一旦我在本地构建了一个强大的命名版本的消息DLL,它解决了这个问题。
我认为“无端点配置...”异常似乎因为许多不同的原因而被抛出,并且它掩盖了实际原因。有人知道诊断这类问题的好方法吗?
答案 3 :(得分:1)
当项目的构建属性设置为在x86的平台目标上运行时,我也看到了类似的东西。
我最初使用输出类型的控制台应用程序设置项目,导致它使用x86的平台目标创建。
我后来将项目类型更改为类库(但无法将平台类型更改为“任何CPU”)。
将平台目标更改为任何CPU使其开始工作。
答案 4 :(得分:1)
发现了一个可能导致此异常的其他方案,当前未包含在已接受的答案中。它特定于使用 Azure 作为NServiceBus传输/持久性机制。
当 Azure SDK未正确安装时,我们也发生了此错误。(这是怎么回事?如果您获得最新版本的SDK,平台安装程序会很有效,但是否则单独安装SDK组件可能会导致错过组件。)
深入研究细节:Fusion Log表明NServiceBus.Host.exe无法解析Microsoft.WindowsAzure.ServiceRuntime。
解决方案是安装以下所有组件(甚至需要模拟器才能解决所有依赖关系):
在我们的特殊情况下,我们必须从http://www.microsoft.com/en-US/download/details.aspx?id=42317
获取sdk的2.3版本希望这些信息有助于某人。