2017-07-17 76 views
0

我似乎無法弄清楚如何格式化隊列路徑。我以前從未使用過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

回答

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);    
     } 
+0

好。我需要添加雙斜槓。那是我的錯誤。 「jsmith528 \\私人$ \\測試」 – LearningToCode

0

下面是我用

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

更多的MSDNMSDN

+1

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

+0

@YuriS - 是的,這是一個更好的參考。 – hatchet