2011-04-29 42 views
4

我的应用程序由两部分组成:一个将队列发送到专用MSMQ队列的Web服务以及一个Windows服务,该服务将队列插入数据库并将其插入数据库。在我的机器,一切都很好,但是当我把它们部署到服务器,权限问题复活了:如何访问由NETWORK SERVICE帐户创建的专用MSMQ队列?

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

我试图添加管理员帐户的权限,但失败并出现错误“访问被拒绝”。我甚至不能删除这些队列。

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

回答

5

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

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

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