我已经取消选择私人队列发送消息的权限,但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,并且CanRead测试按照预期的方式将QueueAccessMode设置为Receive。 – chad
设置QueueAccessMode.Receive时,CanWrite会变为false吗?因为从我查看ILSpy中的MessageQueue类看来,只有您提供的模式反映了这些属性值。 – user7116