Проблемы с чтением из очередей сообщений Microsoft в C # - PullRequest
1 голос
/ 23 марта 2012

У меня проблемы с чтением из MSMQ. Когда я пишу в очередь, она работает отлично, но когда я пытаюсь прочитать это сообщение из очереди, я получаю следующее исключение: «Очередь не существует или у вас недостаточно прав для выполнения операции». Очередь действительно существует, и у меня есть полные права на машину и очередь. Вот мой код:

 public string path = @".\private$\";

 public void WriteToQueue(string QueueName, object messageObject)
 {
    try
    {
        path = path +  QueueName;
        MessageQueue msmq = null;

        if (!MessageQueue.Exists(path))
        {
            msmq = MessageQueue.Create(path);
        }
        else
        {
            msmq = new MessageQueue(path);

        }
         msmq.Formatter = new XmlMessageFormatter(new Type[] { typeof(string)});
         msmq.Send(messageObject);
         msmq.Close();
        }
        catch (MessageQueueException ex)
        {
            System.ArgumentException argEx = neArgumentException(ex.ToString());
            throw argEx;
        }

        path = @".\private$\";
    }


 public string ReadQueue(string QueueName)
 {
     try
     {
         path = path + QueueName;

         MessageQueue msmq = new MessageQueue(path);

         string msg;
         msmq.Formatter = new XmlMessageFormatter(new Type[] { typeof(string)});

         msg = msmq.Receive().Body.ToString();  //exception is thrown here
         path = @".\private$\";

         return msg;
        }
     catch (Exception ex)
     {
         return null;
     }
 }

Может быть проблема может быть в том, что он читается как тип строки? Может быть, не в правильном формате?

1 Ответ

0 голосов
/ 30 марта 2012

Попробуйте это:

public string path = ".\\private$\\"; 

'@' у меня тоже не работает.

...