C# N服务总线端点命名

C# N服务总线端点命名,c#,asp.net,nservicebus,C#,Asp.net,Nservicebus,我正在努力掌握NSerivceBus,尽管它进展顺利,但我很难理解如何配置EndPointName 例如,在完成了几个示例之后,我成功地提出了以下内容,但是我试图更改端点名称的任何尝试都失败了 因此,myServer队列是当前的名称,我认为是从这里的名称空间中获取的: namespace MyServer { class EndPointConfig : IConfigureThisEndpoint, AsA_Server { } } 但是当我放置[Endpoint

我正在努力掌握NSerivceBus,尽管它进展顺利,但我很难理解如何配置EndPointName

例如,在完成了几个示例之后,我成功地提出了以下内容,但是我试图更改端点名称的任何尝试都失败了

因此,myServer队列是当前的名称,我认为是从这里的名称空间中获取的:

  namespace MyServer
{
    class EndPointConfig : IConfigureThisEndpoint, AsA_Server
    {
    }
}
但是当我放置[EndpointName(“AnotherQueue”)]时,没有任何变化(除了它没有填充myServer队列)

我还尝试更改Global.ASAX:

public static IBus Bus { get; set; }
        void Application_Start(object sender, EventArgs e)
        {
            Bus = NServiceBus.Configure.With()
                .Log4Net()
                .DefaultBuilder()
                .DefineEndpointName("AnotherQueue")
                .XmlSerializer()
                .MsmqTransport()
                    .IsTransactional(false)
                    .PurgeOnStartup(false)
                .UnicastBus()
                    .ImpersonateSender(false)
                .CreateBus()
                .Start();
        }
但同样,它没有起作用

我通过查看mmc并检查那里的消息队列来测试它

最后,我尝试更改web.config

<configSections>
        <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NserviceBus.Core"/>
        <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/>
    </configSections>

    <MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5"/>

    <UnicastBusConfig>
        <MessageEndpointMappings>
            <add Messages="MyMessage" Endpoint="AnotherQueue"></add>
        </MessageEndpointMappings>
    </UnicastBusConfig>

还是什么都没有

有人能帮忙吗?我仍在想这个问题(这对我来说是一项新技术),所以如果我问得不好,我表示歉意

提前谢谢 Lex

两件事:

我不是100%确定,但如果您在web应用程序中托管,我认为您不想使用IConfigureThisEndpoint和AsA_服务器。我相信您在application_Start中拥有的配置代码就是您所需要的。另一种配置方法是在NSB自己的进程中托管时使用(作为windows服务或控制台)

尝试将
DefineEndPointName(“AnotherQueue”)
作为
NServiceBus.Configure.With()
之后的第一个命令。这是我设置它的方式,它可以工作,我相信With()之后的命令顺序很重要,并且可以无声地失败(我认为这将在未来的版本中解决)

根据您试图完成的任务,您可能根本不需要unicastbus配置。该配置用于在客户端定义端点——换句话说,使用它定义您的应用程序想要与之通信的端点

最后,在运行web应用程序时使用它的调试窗口来查找可能出现问题的线索。NSB在调试模式下会生成许多非常有用的日志信息,所有这些信息都应该发送到调试窗口。可能是因为你的应用程序没有创建队列的权限,或者其他类似的内容。一旦我发现t bit out,排除许多“学习曲线问题”变得容易多了。

DefineEndPointName()必须在DefaultBuilder()之前。请参阅