代码之家  ›  专栏  ›  技术社区  ›  LearningToCode

使用C的MSMQ队列路径#

  •  0
  • LearningToCode  · 技术社区  · 7 年前

    我正在使用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之后的一行中发现一个错误,该错误表示:

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

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Franreau    7 年前

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

    @".\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);              
            }