IIS上的WCF服务在部署后不首次自动获取MSMQ消息

时间:2016-08-31 13:38:17

标签: c# wcf iis

我有一个WCF服务,它从MSMQ读取消息并将消息写入MSMQ。这是在IIS中托管的。我在IIS中的WCF服务上启用了net.msmq和http协议。我还给了MSMQ for app pool的完全权限我正在运行这项服务。

一旦我在win server 2012上部署了这个并且我将消息队列化,WCF服务就不会接收消息。如果我的服务名称是myservice,那么一旦我在浏览器中点击http://machinename/site/myservice.svc,就会自动获取消息。

您能否知道导致此行为的原因。

1 个答案:

答案 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