消息队列异常:队列不存在或您没有足够的权限来执行操作

Dor*_*eka 10 c# mysql asp.net message-queue

在这行代码我得到了错误,如我所提到的

我将MSMQ_NAME声明为字符串,如下所示

  private const string MSMQ_NAME = ".\\private$\\ASPNETService";

    private void DoSomeMSMQStuff()
    {
        using (MessageQueue queue = new MessageQueue(MSMQ_NAME))
        {
            queue.Send(DateTime.Now); //Exception raises
            queue.Close();
        }
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述

小智 13

您能否首先在下面的位置验证队列是否存在名称为"ASPNETService"?

计算机管理 - >服务和应用程序 - >消息队列 - >专用队列


dig*_*rok 6

我有类似的问题。我很困惑,因为我的代码可以在本地开发机器上运行,但不能在生产环境中运行。更奇怪的是,队列的创建方式完全相同。

事实证明,默认情况下 IIS 无权访问它们。我刚刚打开了权限。

计算机管理 -> 专用队列 -> 右键单击​​队列名称 -> 属性 -> 安全选项卡 -> 单击“Everyone”用户 -> 单击完全控制/允许复选框 -> 单击确定

这为我解决了这个问题,就我而言,这不是问题,但您可能需要考虑向所有用户开放它的后果。

另外,我必须在所有服务器上的所有队列中执行此操作。似乎没有办法多选队列或文件夹以便同时设置多个队列的权限。