使用C#的MSMQ队列路径

时间:2017-07-17 19:20:08

标签: c# asp.net msmq

我似乎无法弄清楚如何格式化队列路径。我之前从未使用过MSMQ。我进行了设置,创建了一个名为test的私有队列,并希望尝试发送消息。

我使用的是Visual Studio,ASP.NET,webforms,C#。

  protected void Page_Load(object sender, EventArgs e)
    {
        SendPrivateTx();  
    }

    public void SendPrivateTx()
    {
        MessageQueue rmQ = new MessageQueue("jsmith528/private$/test");
        rmQ.Send("message", MessageQueueTransactionType.Single);
    }

这是我正在使用的代码。在新的MessageQueue声明后,我在行上收到错误:

  

mscorlib.dll中发生了'System.ArgumentOutOfRangeException'类型的异常但未在用户代码中处理

     

附加信息:长度不能小于零。

我确信这是没有正确路径的结果。我正在使用Windows 10。

2 个答案:

答案 0 :(得分:0)

以下是我使用的内容

"FormatName:DIRECT=OS:{serverName}\private$\{queueName}"

MSDN以及MSDN的更多内容。

答案 1 :(得分:0)

您的本地专用队列应格式化为:

@".\Private$\TextsQueue"

以下是我的" StartQueue"看起来像:

        List<ServiceController> services = ServiceController.GetServices().ToList();
        ServiceController msQue = services.Find(o => o.ServiceName == "MSMQ");
        if (msQue != null) 
        {
            if (msQue.Status == ServiceControllerStatus.Running) 
            { 
                // It is running.

                //Q Creation
                if (MessageQueue.Exists(@".\Private$\TextsQueue"))
                {

                    textsQueue = new System.Messaging.MessageQueue(@".\Private$\TextsQueue");

                }
                else
                    textsQueue = MessageQueue.Create(@".\Private$\TextsQueue");


                textsQueue.Purge();
                textsQueue.ReceiveCompleted += new
                ReceiveCompletedEventHandler(QueueReceiveCompleted);              
        }