【问题标题】:WCF service on IIS not auto picking up MSMQ message for first time after deployedIIS 上的 WCF 服务在部署后第一次不会自动拾取 MSMQ 消息
【发布时间】:2017-01-08 03:21:11
【问题描述】:

我有一个从 MSMQ 读取消息并将消息写入 MSMQ 的 WCF 服务。这是托管在 IIS 中的。我在 IIS 的 WCF 服务上启用了 net.msmq 和 http 协议。我还为我正在运行此服务的应用程序池授予 MSMQ 的完全权限。

一旦我在 win server 2012 上部署了它并排队消息,WCF 服务就不会接收消息。如果我的服务名称是 myservice,一旦我在浏览器中点击 http://machinename/site/myservice.svc,就会自动接收消息。

请您知道是什么导致了这种行为。

【问题讨论】:

    标签: c# wcf iis


    【解决方案1】:

    您的问题是您的 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

    【讨论】:

    • 感谢您提供帮助。我现在试过了。我将 apppool 启动模式设置为始终运行。为了测试,我重新启动了 IIS,但它仍然没有启动它。我再次点击它拾取的 URL。我在 windows 2012 r2 和 IIS 8.5 上尝试这个
    猜你喜欢
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多