Msmq和WCF服务

Sow*_*mya 7 wcf windows-services msmq

我使用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)
Run Code Online (Sandbox Code Playgroud)

有谁能建议上述问题的可能解决方案?我是否遗漏了为队列和Windows服务设置的任何权限,如果是这样,你能否建议在哪里添加这些权限?

mar*_*c_s 7

汤姆·霍兰德(Tom Hollander)有一个关于使用WCF的MSMQ的三部分博客系列 - 非常值得一试!

也许你会找到解决你某个地方提到的问题的方法!


Dan*_*llo 4

是的,这看起来像是权限问题。

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

这一点在 Nicholas Allen 的文章:诊断常见队列错误中也得到了证实,其中作者将错误代码 0xC00E0025 定义为权限问题。