Msmq和WCF服务

我使用NetMsmq绑定创建了一个WCF服务,为此我在我的机器上创建了一个专用队列并执行了该项目。 这工作正常,因此我的WCF服务启动并使用调试环境中的队列访问消息。 现在,我想使用Windows服务托管服务,同样我也创建了一个新项目和Windows安装程序(此服务在本地系统帐户下运行)。 然后我尝试通过命令提示符使用InstallUtil命令安装此Windows服务。 在安装过程中以及服务主机开放期间,我收到一个异常情况:

There was an error opening the queue. Ensure that MSMQ is installed and running, the queue exists and has proper authorization to be read from. The inner exception may contain additional information. 
Inner Exception System.ServiceModel.MsmqException: An error occurred while opening the queue:Access is denied. (-1072824283, 0xc00e0025). The  message cannot be sent or received from the queue. Ensure that MSMQ is installed and running. Also ensure that the queue is available to open with the required access mode and authorization.
   at System.ServiceModel.Channels.MsmqQueue.OpenQueue()
   at System.ServiceModel.Channels.MsmqQueue.GetHandle()
   at System.ServiceModel.Channels.MsmqQueue.SupportsAccessMode(String formatName, Int32 accessType, MsmqException& msmqException)

任何人都可以为上述问题提出可能的解决方案吗? 我是否错过了为队列和Windows服务设置的任何权限,如果有的话,你能建议在哪里添加这些权限?


汤姆霍兰德有一个很棒的三部分的博客系列文章,讲述如何使用WCF的MSMQ - 值得一试!

  • MSMQ,WCF和IIS:让他们玩得好(第1部分)
  • MSMQ,WCF和IIS:让他们玩得很好(第2部分)
  • MSMQ,WCF和IIS:让他们玩得很好(第3部分)
  • 也许你会在某处找到解决你的问题的方法!


    是的,它看起来像一个权限问题。

    右键单击服务器管理器中的专用队列,然后选择属性。 进入“安全”选项卡,并确保您拥有适用于本地系统帐户的权限。

    Nicholas Allen的文章“Diagnosing Common Queue Errors”中也证实了这一点,其中作者将错误代码0xC00E0025定义为权限问题。


    我遇到了同样的问题,这里是解决方案。

    右键单击“我的电脑” - >管理。 在“计算机管理”窗口中,转到“服务和应用程序 - >消息队列 - >队列”,选择你的队列并访问属性。 添加运行你的WCF应用程序的用户并给予完全访问权限。 这应该可以解决问题。

    链接地址: http://www.djcxy.com/p/55799.html

    上一篇: Msmq and WCF Service

    下一篇: Using Windows Services to process MSMQ messages via WCF