如何访问NETWORK SERVICE帐户创建的私有MSMQ队列?

时间:2011-04-29 07:35:25

标签: .net permissions msmq

我的应用程序由两部分组成:一个Web服务,它将队列发送到一个私有MSMQ队列;一个Windows服务,它接受队列并将它们插入数据库。在我的开发机器中,一切都很好,但是当我将它们部署到服务器时,一个权限问题就出现了:

  • 在IIS内部运行的Web服务使用NETWORK SERVICE帐户创建队列。
  • 服务本身,以管理员身份运行,然后无法访问队列。

我尝试为管理员帐户添加权限,但因“访问被拒绝”错误而失败。我甚至无法删除这些队列。

我该如何解决这个问题? 非常感谢你

2 个答案:

答案 0 :(得分:5)

当webservice创建队列时,应确保它具有适当的访问权限。如果您使用的是.NET,则可以使用MessageQueue.SetPermissions方法在创建队列后修改队列的权限。

此C#代码将创建一个新的消息队列,并让本地Administrators组完全控制它:

var messageQueue = MessageQueue.Create(path, true);
messageQueue.SetPermissions(
  "Administrators",
  MessageQueueAccessRights.FullControl
);

答案 1 :(得分:1)

添加NETWORK SERVICE和管理员权限。在创建队列时。

如果您想删除队列,请按照此步骤...

https://stackoverflow.com/a/11430249/672891