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

Vim*_*987 4 .net permissions msmq

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

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

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

我怎样才能解决这个问题?非常感谢你

Mar*_*age 5

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

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

var messageQueue = MessageQueue.Create(path, true);
messageQueue.SetPermissions(
  "Administrators",
  MessageQueueAccessRights.FullControl
);
Run Code Online (Sandbox Code Playgroud)