2012-03-23 7 views
1

私のMSMQからの読み取りに問題があります。キューに書き込むとき、それは完全に動作しますが、キューからそのメッセージを読み込もうとすると、「キューが存在しないか、操作を実行するための十分な権限がありません」という例外が表示されます。キューは存在し、マシンとキューに対して完全な権限を持っています。ここに私のコードです:C#のMicrosoft Messaging Queuesからの読み取りに関する問題

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; 
    } 
} 

問題はおそらく文字列の型としてそれを読むことがありますか?正しいフォーマットではないかもしれませんか?

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

'@' あまりにも私のために動作しません:

+0

メソッドの* path *フィールドを変更することは、本当に悪い考えです。 1つの例外とコードが機能しなくなります。あなたと同じような例外があります。ローカル変数を使用します。 –

答えて

0

はこれを試してみてください。

関連する問題