C# 使用CustomConfigurationSource创建NServiceBus时发生异常

C# 使用CustomConfigurationSource创建NServiceBus时发生异常,c#,nservicebus,C#,Nservicebus,我需要使用CustomConfigurationSource创建一个NServiceBus来替换我的app.config 我在代码中实现了CustomConfiguration source,但在创建总线时出现以下异常: System.NullReferenceException未处理 HResult=-2147467261 Message=对象引用未设置为对象的实例。 Source=NServiceBus.Core 堆栈跟踪: 在c:\TeamCity\buildAgent\work\nsb.

我需要使用CustomConfigurationSource创建一个NServiceBus来替换我的app.config

我在代码中实现了CustomConfiguration source,但在创建总线时出现以下异常:

System.NullReferenceException未处理 HResult=-2147467261 Message=对象引用未设置为对象的实例。 Source=NServiceBus.Core 堆栈跟踪: 在c:\TeamCity\buildAgent\work\nsb.master\u 10\src\Unicast\NServiceBus.Unicast\NServiceBus.IStartableBus.Start(操作startupAction)中的NServiceBus.Unicast.Unicast.NServiceBus.IStartableBus.Start(操作startupAction):第852行

我在A类中创建我的总线,如下所示:

public class A: IA
{
    public static IBus Bus { get; private set; }

    public A()
    {
        CreateBus();
    }

    private void CreateBus()
    {
        Bus = NServiceBus.Configure.With()
            .CustomConfigurationSource(new AConfigSource())
            .Log4Net()
            .DefaultBuilder()
            .XmlSerializer()
            .MsmqTransport()
                .IsTransactional(false)
                .PurgeOnStartup(false)
            .UnicastBus()
                .LoadMessageHandlers()
                .ImpersonateSender(false)
            .CreateBus()
            .Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
            // Exception thrown here ******
    }
}
    private UnicastBusConfig UnicastBusConfiguration()
    {
        return new UnicastBusConfig
        {
            ForwardReceivedMessagesTo = "",
            MessageEndpointMappings = new MessageEndpointMappingCollection()
        };
    }
我仍然得到上面提到的同样的例外

下面是我需要在类A中运行的配置:

<configuration>
  <configSections>
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
    <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
  </configSections>
  <MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5" />
  <UnicastBusConfig ForwardReceivedMessagesTo="">
    <MessageEndpointMappings></MessageEndpointMappings>
  </UnicastBusConfig>
  <MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="NServiceBus" publicKeyToken="9fc386479f8a226c" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.3.0.0" newVersion="3.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="NServiceBus.Core" publicKeyToken="9fc386479f8a226c" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.3.0.0" newVersion="3.3.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

更多信息:我正在运行一个WPF应用程序。我在解决方案中添加了一个类库来承载nservicebus。我创建了上面提到的对象“Class A”的一个实例。我需要nservicebus根据类A的app.config进行配置,而不是根据WPF启动项目的app.config进行配置

也许CustomConfigurationSource有点过头了?是否有更好的方法在a类项目中使用app.config命令NServiceBus进行配置

更新:我收到以下错误,表明缺少UnicastBus.cs类。我在我的项目中引用了NserviceBus.Host

正在查找“c:\TeamCity\buildAgent\work\nsb.master\U 10\src\unicast\NServiceBus.unicast\UnicastBus.cs”的源。(无校验和。) 文件“c:\TeamCity\buildAgent\work\nsb.master\u 10\src\unicast\NServiceBus.unicast\UnicastBus.cs”不存在。 正在脚本文档中查找“c:\TeamCity\buildAgent\work\nsb.master\u 10\src\unicast\NServiceBus.unicast\UnicastBus.cs”。。。 在项目中查找“c:\TeamCity\buildAgent\work\nsb.master\U 10\src\unicast\NServiceBus.unicast\UnicastBus.cs”。
在项目中找不到该文件。

只是猜测,但我想说您可能需要初始化一些
UnicastBusConfig
属性

John,我尝试初始化UnicastBusConfig的一些属性。见我的编辑上面。我仍然得到同样的例外。如何将NServiceBus配置为仅在A类项目中使用本地配置文件?我从wpf应用程序中的启动项目实例化类A。我不想基于启动项目中的app.config在A类中配置nservicebus。你能在这里提出一个问题吗
<configuration>
  <configSections>
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
    <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
  </configSections>
  <MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5" />
  <UnicastBusConfig ForwardReceivedMessagesTo="">
    <MessageEndpointMappings></MessageEndpointMappings>
  </UnicastBusConfig>
  <MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="NServiceBus" publicKeyToken="9fc386479f8a226c" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.3.0.0" newVersion="3.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="NServiceBus.Core" publicKeyToken="9fc386479f8a226c" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.3.0.0" newVersion="3.3.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>