BasicHttpBinding& SingleContext服务!

时间:2011-06-21 04:00:43

标签: .net wcf iis-7 basichttpbinding

我有一个使用basicHttpBinding在IIS 7上托管的WCF服务。该服务充当在多台机器上分配的其他服务的控制器,称为客户端 该服务配置为Single ContextMode Multiple ConurrecnyMode。这样它就能保持对象的状态。我的问题是在一段时间不活动后,我看到服务再次调用构造函数,因此它失去了所有状态!有任何建议让这项服务永远存在吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

听起来IIS正在回收您的服务。牢记这一点(摘自互联网Information Services Hosting Best Practices):

  

IIS托管环境是   针对没有的服务进行了优化   在内存中保持本地状态。 IIS   回收主机进程作为回应   到各种外部和内部   事件,导致任何不稳定状态   专门存储在内存中   丢失。 IIS中托管的服务应该   将他们的状态存储在外部   进程(例如,在数据库中)   或者可以在内存缓存中   如果是应用程序,可以轻松地重新创建   发生回收事件。

虽然可以禁用回收,但如果您需要进行IIS托管并且关心状态,则应该将其置于持久的位置。

答案 1 :(得分:0)

默认情况下,IIS每29小时回收一次应用程序池。

为避免这种情况,您可以转到应用程序池回收设置并取消选中此选项。

enter image description here

这仍然不能保证100%状态持久性,因为IIS可以重新启动,当web.config更改时可以回收应用程序池等。如果状态对您很重要,您可能希望将状态保留到数据库而不是依靠记忆。

另一个需要考虑的选择是在Windows服务而不是IIS中托管服务。

相关问题