【问题标题】:How do I give a Windows Service access to a MSMQ queue, with a setup project?如何通过设置项目授予 Windows 服务对 MSMQ 队列的访问权限?
【发布时间】:2010-11-30 00:47:44
【问题描述】:

我有一个需要访问消息队列 (MSMQ) 的 Windows 服务。

队列本身是使用自动生成安装代码的MessageQueueInstaller 组件创建的。然后我使用标准设置项目进行部署。

服务的安装方式相同,使用相同的安装项目。

当我启动服务时,它会立即停止,并且我的代码中出现以下异常

对消息队列系统的访问被拒绝

LocalService 和 NetworkService 我都试过了。

我需要安装程序更改队列所需的权限还是需要更改服务的权限?

我应该如何修改设置项目以进行此更改?

【问题讨论】:

    标签: c# windows-services installation msmq


    【解决方案1】:

    造成此行为的原因之一是 MSMQ 安装在 Networkgroup 模式下。

    尝试使用在计算机中具有管理员权限的域中的帐户。 (这是唯一对我有用的东西)

    您还可以为该用户获得 MQ 的大权利。打开计算机管理器并这样做。

    【讨论】:

    • 这听起来像是部署到软件的人需要做的工作。我可以让安装项目来做这些吗?
    • 我知道如何做到这一点的唯一方法是手动。我们使用 scribesoft 的产品。即使使用他们的安装程序,我也必须手动设置。
    【解决方案2】:

    您应该更改队列的权限。默认情况下,这些用户无权访问队列。

    【讨论】:

    • 对于那些可能关心的人,我做了以下事情:messageQueue.SetPermissions("Everyone", MessageQueueAccessRights.FullControl);
    • 感谢@Pure.Krome 这也解决了我的问题:)
    • 哇! MSMQ - 现在我已经有 .. 年没有使用它们了!我现在正在使用 Azure Queue,它们很棒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多