IIS 6 托管环境中 WCF 应用程序生命周期说明

IIS 6 托管环境中 WCF 应用程序生命周期说明

大家好,感谢阅读,

我遇到了一个延迟问题,我的应用程序在上次调用后经过一段确定的时间后首次调用时需要很长时间才能启动。该 Web 应用程序是一个 WCF 服务,我们谈论的是实际处理开始前大约 18 秒的延迟。现在,我相信我知道如何减少这个延迟,所以这不是我的问题(无论如何,这更像是一个 stackoverflow 问题)

我的问题是,有人能向我解释一下为什么尽管我禁用了工作进程关闭和工作进程回收,应用程序在一段不确定的不活动时间后仍然会“停止”吗?

为了理解这一点,我需要了解更多有关 IIS 中托管的 WCF 服务的内部工作原理的信息。我完全希望对此有一个直接的答案。

非常感谢您提供的任何帮助,DC

答案1

如果在工作进程的“回收和性能”选项卡上未选中所有选项,则 IIS 不应终止进程。是否有任何事件日志条目与进程“结束”的时间相对应?在我看来,WCF 应用程序可能会崩溃。WCF 不会像标准 .NET 应用程序那样将异常记录到事件日志中,因此如果您不编写自己的日志,您可能需要打开WCF 跟踪看看这是否是问题所在。

同时,解决您的问题的快速丑陋方法可能是在您的 WCF 服务中创建某种廉价的测试或只读事务,然后配置一个监控应用程序或脚本每隔 X 秒对其进行轮询,以使工作进程保持活动状态并使用预 JIT 的代码。

答案2

我认为该问题与 WCF 无关,错误在于 nHibernate 整理其映射。我通过编译 nHibernate 映射文件解决了该问题,这样 nHibernate 就不必这样做了。

相关内容