使用C#MSMQ的队列路径#

问题描述:

我似乎无法弄清楚如何格式化队列路径。我以前从未使用过MSMQ。我设置它,创建一个名为test的私有队列,并且想要尝试发送消息。使用C#MSMQ的队列路径#

我正在使用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,指出后:

类型“System.ArgumentOutOfRangeException”的异常出现在mscorlib.dll,但在用户代码中没有处理

其他信息:长度不能小于零。

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

+0

尝试这些:\ PRIVATE $ \测试或jsmith528 \ Private $ \ test – Kevin

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

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

好。我需要添加双斜杠。那是我的错误。 “jsmith528 \\私人$ \\测试” – LearningToCode

下面是我用

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

更多的MSDNMSDN

+1

或在这里:https://msdn.microsoft.com/en-us/library/ch1d814t(v=vs.110).aspx –

+0

@YuriS - 是的,这是一个更好的参考。 – hatchet