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$\\";
'@' あまりにも私のために動作しません:
メソッドの* path *フィールドを変更することは、本当に悪い考えです。 1つの例外とコードが機能しなくなります。あなたと同じような例外があります。ローカル変数を使用します。 –