プライベートキューでメッセージを送信するアクセス許可の選択を解除しましたが、MessageQueue.CanWrite
は返信なしfalse
です。受信メッセージのアクセス許可を切り替えることができ、CanRead
プロパティが期待通りに応答します。 CanWrite
プロパティの動作が異なるのはなぜですか?MessageQueue.CanWriteは常にtrueを返します
私はいくつかの異なるADユーザーでこの問題をテストしましたが、結果は同じです。
特定のユーザーアカウントが特定のリモートプライベートキューにメッセージを送信できるかどうかを検証する別の方法はありますか?私が言うことができるものから、
public class SendBehavior : IMsmqRuleBehavior
{
public bool Validate(string queuePath)
{
using (var queue = new MessageQueue(queuePath, QueueAccessMode.Send))
{
return queue.CanWrite;
}
}
}
public class ReceiveBehavior : IMsmqRuleBehavior
{
public bool Validate(string queuePath)
{
using (var queue = new MessageQueue(queuePath, QueueAccessMode.Receive))
{
return queue.CanRead;
}
}
}
'QueueAccessMode.Send'に' CanWrite'が 'true'となるように要求されているようです。*(側の質問:あなたはこのキューのための」Authenticated'チェックボックスを切り替えた)* – user7116
私はその考えられますが、デフォルトのQueueAccessModeはSendAndReceiveで、受信するように設定QueueAccessModeで期待通りCanReadテストが動作します。 – chad
'QueueAccessMode.Receive'を設定すると' CanWrite'は 'false'になりますか? ILSpyの 'MessageQueue'クラスの私の見直しから、あなたのモードだけがそれらのプロパティ値を反映しているようです。 – user7116