1

我编写了一个小型 wcf 服务应用程序,它从 msmq 读取消息。并在 IIS-7 中托管 wcf 服务。问题是我只有在 IIS 中单击浏览按钮时才能阅读该消息。没有引用此服务 uri 的客户端应用程序。我需要 wcf 服务始终自动连续运行。

是否可以在没有任何用户交互的情况下连续运行托管在 IIS 中的 WCF 服务?

4

2 回答 2

2

当您在 IIS 中托管任何内容时,它始终会持续运行,除非您的站点处于空闲状态。IIS 有一个默认设置,即站点空闲超过 20 分钟,它将关闭站点。此设置位于应用程序池高级设置中,如图所示以下

应用程序池空闲超时

您可以将应用程序池空闲超时设置为零,以便它永远不会关闭

还想知道您究竟是如何编写从 MSMQ 服务中提取数据的逻辑。如果您没有查看详细信息,在WCF或 Asp.net 中运行重复的后台作业并不简单。如果您使用的是计时器线程,它可能不会一直有效。如果您使用的是 hangfire之类的东西,那就没问题了。但是您必须确保它一直都可以正常工作并检查所有像这样这样的边缘情况

所以外卖是

如果您需要后台任务,请改用 Windows 服务。或者您使用 hangfire 或此 nuget 之类东西并在相应的应用程序池中将 IdletimeOut 设置为 0

于 2017-06-23T02:56:12.933 回答
1

您是否已将应用程序池配置为连续运行?这意味着至少禁用所有回收机制,将空闲超时设置为 0,并设置 Start Mode == Always。

您可能会受益于使用应用程序初始化模块来确保服务始终保持激活状态。

于 2017-06-22T21:53:20.877 回答