首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NServiceBus & MSMQ:如何更改队列的默认权限?

NServiceBus & MSMQ:如何更改队列的默认权限?
EN

Stack Overflow用户
提问于 2010-05-21 18:15:30
回答 4查看 2.8K关注 0票数 1

我的团队正在第一次尝试使用NServiceBus (v2.0),使用MSMQ作为后备存储。我们被队列权限卡住了。

我们在一个Web窗体应用程序中使用它,在该应用程序中运行网站的用户帐户不是计算机上的管理员。

当NServiceBus创建MSMQ队列时,它将授予本地administrators组完全控制权限,以及授予本地everyone和匿名组发送邮件的权限。

但是后来,作为初始化队列的一部分,NServiceBus尝试读取它的所有消息。这就是我们遇到权限错误的地方。由于该网站未以管理员身份运行,因此不允许其读取邮件。

其他人是如何处理这件事的?您的应用程序是否以管理员身份运行?还是先在代码中创建MSMQ队列,给它所需的权限,这样NServiceBus就不必创建它了?或者是我们遗漏了一些配置?或者,我们编写的代码错误地使用了NServiceBus,很可能会遇到这种情况?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-25 09:18:56

我们在Installer子类中创建队列,并将其作为msi安装的一部分执行。队列的所有权是一个快捷方式,但可以通过AccessControlList设置相关权限:

代码语言:javascript
复制
MessageQueue queue = MessageQueue.Create(queueName, true);
AccessControlList permissions = new AccessControlList();
permissions.Add(new MessageQueueAccessControlEntry(
    new Trustee(this.serviceProcessInstaller.Username),
    MessageQueueAccessRights.FullControl, 
    AccessControlEntryType.Set));
// Add additional permissions for admins & message-sending accounts
queue.SetPermissions(permissions);

我觉得NServiceBus的队列自动创建功能更适合开发,而不是部署。

票数 1
EN

Stack Overflow用户

发布于 2010-05-21 22:34:21

这篇博文应该会有所帮助:

http://blogs.msdn.com/johnbreakwell/archive/2009/08/03/default-msmq-queue-permissions-have-changed-in-msmq-4-0.aspx

特别是:

如果要在创建队列时设置权限,则始终可以构建所需的安全描述符,并将其传递到MQCreateQueue的pSecurityDescriptor参数中。但是,您不能自定义默认值,因为它们是硬编码的。

干杯

约翰·布雷克韦尔( John Breakwell )

票数 2
EN

Stack Overflow用户

发布于 2010-05-21 18:33:37

更改队列的所有权,这是我在类似情况下唯一有效的方法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2881187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档