2017-06-22 55 views
1

我写了一个小的wcf服务应用程序,它从msmq读取消息。并在IIS-7中托管了wcf服务。问题是我只能在IIS上点击浏览按钮才能阅读邮件。没有引用此服务的客户端应用程序。我需要wcf服务来始终自动运行。如何使WCF服务在IIS中连续运行?

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

回答

0

您是否配置了应用程序池连续运行?这意味着至少禁用所有回收机制,将空闲超时设置为0,并设置启动模式==始终。

你可能从使用Application Initialization模块,以确保服务惠及保持激活所有的时间。

+0

使用类似hangfirethis nuget与IDLETIMEOUT 0谢谢。根据您的建议,我尝试了IIS8中的应用程序初始化模块,并将高级设置的空闲超时更改为0,并将启动模式更改为始终。现在回收后立即读取消息。在IIS8或更高版本中托管WCF服务时是否需要更改其他配置?我只是想弄清楚遵循的标准程序。我没有找到任何关于此的文章。 – user2995902

1

当您在IIS托管任何东西,它总是不断地运行,除非你的网站是idle.IIS有一个默认设置,其中该网站是闲置超过20分钟,就会关闭site.This设置是在应用程序池高级设置如下图所示

Application Pool Idle Timeout

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

还想知道如何编写从MSMQ服务中提取数据的逻辑。如果您没有查看详细信息,则在WCF或Asp.net中运行循环后台作业并非易事。如果您使用的是定时器线程,它可能无法一直工作。 如果你正在使用类似hangfire,那么罚款。但你必须确保它可以精确所有的时间和检查所有的边缘情况下,像thisthis

于是带走的是

如果你需要一个后台任务,使用Windows服务instead.Or你在相应的应用程序池

+0

感谢您的回复。我正在与微软支持合作,看起来我们可以通过三种方式托管wcf服务。 1.初始化模块(IIS 8或更高版本)。 2.使用任务计划程序(特定的exe项目)。 3. Power Shell我们有两种使用IIS7和8的客户端。不确定IIS7的推荐方式。截至目前,我没有使用任何线程机制。另外,我从来没有在工作过。我会通读你的文章,并会看到。 – user2995902