Özel bir sırada İleti Gönderme izinlerinin seçimini kaldırdım ancak MessageQueue.CanWrite
hiçbir zaman false
değerini döndürmez. İleti Alma izinlerini değiştirebilir ve CanRead
özelliği beklendiği gibi yanıt verebilir. Neden CanWrite
özelliği farklı davranıyor?MessageQueue.CanWrite her zaman true değerini döndürür
Birkaç farklı AD kullanıcısıyla bu sorunu test ettim ve sonuçlar aynı.
Belirli bir kullanıcı hesabının belirli bir uzak özel kuyruğa bir ileti gönderip gönderemeyeceğini doğrulamak için farklı bir yaklaşım var mı? Söyleyebileceğim kadarıyla
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;
}
}
}
Görünüşe göre 'CanWrite' muhtemelen 'true' olması gerektiği QueueAccessMode.Send.* (yan soru: Bu sıra için 'Authenticated' onay kutusunu açtınız mı) * – user7116
Bunu kabul ettim ama varsayılan QueueAccessMode SendAndReceive ve CanRead testi, QueueAccessMode Receive için ayarlanmış olarak beklendiği gibi davranır. – chad
'QueueAccessMode.Receive' öğesini ayarladığınızda CanWrite' 'false 'olur mu? Çünkü ILSpy'deki 'MessageQueue' sınıfını incelediğimden, yalnızca verdiğiniz modların bu özellik değerlerini yansıttığı görülüyor. – user7116