IIS Application Recycle删除静态类

时间:2014-07-31 15:29:10

标签: wcf iis dependency-injection dependencies code-injection

我在WCF服务中使用Simple Injector。从VS2010运行它一切都很好。但是,当我使用IIS 7将其发布到我的服务器时,经过一段时间(20分钟,计算)后,我的WCF丢失了容器中所有已注册的程序集,模块和类。

我想IIS会回收WCF服务应用程序池并丢弃我的容器注册。

任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

虽然存在许多使用自托管WCF服务的合法案例,但是,仅仅因为IIS回收而接近自托管可能会适得其反。

在IIS中托管可以在开发和日常操作中为您带来很多好处,而且我不会重复您在Google搜索中可以轻松找到的好处。

因此,当IIS收到您的应用程序的第一个请求时,它将启动名为" w3wp.exe"的工作进程。根据与您的Web应用程序关联的应用程序池中的设置。默认情况下,IIS将在20分钟的空闲时间内关闭。检查应用程序池的高级设置,您将找到生命周期的大量设置。通过开箱即用的自托管,您不会获得如此灵活性和稳健性。

所以基本上你可以有一些选择,只要你决定继续使用IIS托管。

  1. 将空闲超时更改为24小时甚至一个月。
  2. 编写一个小程序或使用cUrl每隔10分钟ping一次应用程序。
  3. 保持原样
  4. 如果您想在操作期间保留状态,请将它们保存在磁盘中,然后在请求触发的下次启动期间加载它们。