Mam odznaczone uprawnienia do wysyłania wiadomości w prywatnej kolejce, ale MessageQueue.CanWrite
nigdy nie zwraca false
. Mogę przełączać uprawnienia Odbierz wiadomość, a właściwość CanRead
reaguje zgodnie z oczekiwaniami. Dlaczego własność CanWrite
zachowuje się inaczej?MessageQueue.CanWrite zawsze zwraca true
Testowałem ten problem z kilkoma różnymi użytkownikami AD, a wyniki są takie same.
Czy istnieje inne podejście do sprawdzania, czy określone konto użytkownika może wysłać wiadomość do określonej zdalnej kolejki prywatnej?
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;
}
}
}
Wygląda na to, że jeśli 'QueueAccessMode.Send' jest wymagane, to' CanWrite' będzie prawdopodobnie "prawdziwe".* (pytanie poboczne: czy przełączono pole wyboru "Uwierzytelnione" dla tej kolejki) * – user7116
Rozważałem to, ale domyślną kolejką QueueAccessMode jest SendAndReceive, a test CanRead zachowuje się zgodnie z oczekiwaniami, gdy parametr QueueAccessMode jest ustawiony na Odbiór. – chad
Czy "CanWrite' zmienia się w" false ", gdy ustawisz' QueueAccessMode.Receive'? Ponieważ z mojej recenzji klasy 'MessageQueue' w ILSpy wydaje się, że tylko twoje tryby, które podasz odzwierciedlają te wartości właściwości. – user7116