C# MSMQ 访问被拒绝
C# MSMQ Access is denied
我们有一个名为 .\public 的 public 队列。\public队列错误。
MessageQueue currentQueue = new MessageQueue(queue);
AccessControlList accessList = new AccessControlList();
Trustee queueOwner = new Trustee(user, Environment.MachineName, TrusteeType.User);
MessageQueueAccessControlEntry accessOwner = new MessageQueueAccessControlEntry(queueOwner, rights);
accessList.Add(accessOwner);
currentQueue.SetPermissions(accessList);
执行代码后出现以下错误:System.Messaging.MessageQueueException (0x80004005):拒绝访问消息队列系统。
我可以确认队列确实存在。
你知道这里可能有什么问题吗?
我发现一个建议说匿名应用程序池凭据可能会导致问题,但事实并非如此。应用程序池作为代码中用作队列所有者的同一用户执行。
我通过结合以下代码示例在分配权限之前实际设置所有者来解决此问题:https://github.com/gavacho/System.Messaging.MessageQueue.SetOwner/blob/master/System.Messaging.MessageQueue.SetOwner.cs
我们有一个名为 .\public 的 public 队列。\public队列错误。
MessageQueue currentQueue = new MessageQueue(queue);
AccessControlList accessList = new AccessControlList();
Trustee queueOwner = new Trustee(user, Environment.MachineName, TrusteeType.User);
MessageQueueAccessControlEntry accessOwner = new MessageQueueAccessControlEntry(queueOwner, rights);
accessList.Add(accessOwner);
currentQueue.SetPermissions(accessList);
执行代码后出现以下错误:System.Messaging.MessageQueueException (0x80004005):拒绝访问消息队列系统。
我可以确认队列确实存在。
你知道这里可能有什么问题吗?
我发现一个建议说匿名应用程序池凭据可能会导致问题,但事实并非如此。应用程序池作为代码中用作队列所有者的同一用户执行。
我通过结合以下代码示例在分配权限之前实际设置所有者来解决此问题:https://github.com/gavacho/System.Messaging.MessageQueue.SetOwner/blob/master/System.Messaging.MessageQueue.SetOwner.cs