我有一个WCF服务,它从MSMQ读取消息并将消息写入MSMQ。这是在IIS中托管的。我在IIS中的WCF服务上启用了net.msmq和http协议。我还给了MSMQ for app pool的完全权限我正在运行这项服务。
一旦我在win server 2012上部署了这个并且我将消息队列化,WCF服务就不会接收消息。如果我的服务名称是myservice,那么一旦我在浏览器中点击http://machinename/site/myservice.svc,就会自动获取消息。
您能否知道导致此行为的原因。
答案 0 :(得分:0)
您的问题是您的WCF服务需要侦听队列,但在IIS决定启动应用程序之前,它无法执行此操作。
仅当IIS需要处理HTTP请求时才会发生这种情况。收到请求后,它将启动您的应用程序,然后可以开始侦听队列。
解决此问题的最简单方法是不使用IIS来托管队列侦听器。请改用Windows服务。
如果您遇到IIS,但是您使用的是7.5或更高版本,则可以configure the application pool settings在IIS启动时启动应用程序:
<applicationPools>
<add name="appPool1"
startMode="AlwaysRunning" />
</applicationPools>
您还需要确保已安装并运行Windows激活服务:https://msdn.microsoft.com/en-us/library/ms731053(v=vs.110).aspx