gpt4 book ai didi

nservicebus - 可怕的 "No endpoint configuration found in scanned assemblies"NServiceBus 错误

转载 作者:行者123 更新时间:2023-12-04 13:09:56 25 4
gpt4 key购买 nike

背景:

  • 我的解决方案中有两个 NServiceBus 端点项目。
  • 两者都是 NServiceBus 订阅者,并且包含一条消息的消息处理程序。
  • 每个订阅者项目处理来自两个不同发布者之一的消息。因此,一个项目引用来自一个发布者的消息 DLL,而另一个项目引用来自另一个发布者的消息 DLL。
  • 两个发布者都在我的解决方案之外。
  • 除了消息 DLL,两个订阅者项目都为 NServiceBus 引用相同的二进制文件,并且还具有完全相同的设置(UnicastBusConfig、EndpointConfig、appSettings 等)

  • 一个订阅者项目运行良好,但另一个失败并出现以下错误:

    未处理的异常: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 无法启动。但是,我不确定如何找出问题所在。我看过:
  • NServiceBus 发布者都使用 ildasm 消息 DLL 的 list ,它们是相同的(关于处理器标志和引用的 NServiceBus DLL 版本)。
  • NSB 消息项目,它们都是使用 .Net 3.5 框架构建的。

  • 我在这里要疯了,几乎花了一天的时间试图让这个工作。任何帮助将不胜感激。

    最佳答案

    好吧,异常告诉你它到底是关于什么的。
    它正在寻找一些实现 的类IConfigureThisEndpoint .

    我想到了三件事:

  • 你忘了实现它(看看 NServiceBus 示例)
  • 你实现了它,但你的类不是 公众 内部
  • 你有 不止一个文件夹 中的程序集或子文件夹 实现 IConfigureThisEndpoint
  • 的文件所在的位置
  • 您的程序集的框架版本与 NServiceBus 程序集之间存在不匹配,即您使用的是为 .NET 3.5 编译的 NServiceBus,但 Visual Studio 2010 将您的端点(默认情况下)创建为 .NET 4.0。 (由 David Boike 添加的点)
  • 失败的订阅者引用的消息 DLL 是延迟签名的。这导致它失败并出现“未找到端点配置...”错误。在本地构建消息 DLL 的强命名版本可以解决该问题。 (由 thecolour 添加的点)
  • “无端点配置...”异常似乎是由于许多不同的原因而引发的,并且它掩盖了实际原因。异常基本上只是说找不到配置,并没有说明问题的原始原因是什么。 (由 thecolour 添加的点)
  • 我们使用的 NServiceBus 版本不是针对 .NET v4 编译的。所以我们需要创建一个配置文件 NServiceBus.Host.exe.config 配置要使用的 .NET 版本。
  • 不要忘记设置前面提到的 NServiceBus.Host.exe.config 将文件复制到属性窗口中的/bin/Debug 文件夹中。一直发生在我身上... ;-)

  • 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 然后遍历所有文件并找到旧命名程序集和新命名程序集,并以相同的异常结束。

    请注意,如果包含相同接口(interface)实现的第二个程序集位于子文件夹中,可能会导致 tis 错误,也会发生这种情况。这种行为给我带来了一些调试上的麻烦,因为我之前将文件复制到子文件夹作为短期备份......

    [编辑]

    编辑以在此线程中添加其他作者的其他项目以确保完整性。

    [编辑 2]

    添加了有关 NServiceBus.Host.exe.config 的更多信息.

    关于nservicebus - 可怕的 "No endpoint configuration found in scanned assemblies"NServiceBus 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6095043/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com