首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BasicHttpBinding和SingleContext服务!

BasicHttpBinding和SingleContext服务!
EN

Stack Overflow用户
提问于 2011-06-21 12:00:43
回答 2查看 118关注 0票数 2

我有一个使用basicHttpBinding托管在IIS7上的WCF服务。该服务充当分布在多台计算机上的其他服务的控制器,这些服务称为客户端。

该服务配置为具有Multiple ConurrecnyModeSingle ContextMode。这样它就能保持物体的状态。我的问题是,在一段时间不活动后,我看到服务再次调用构造函数,因此它失去了所有状态!有什么建议可以让这项服务永远存在吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-21 12:08:15

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

为不在内存中维护本地状态的服务优化了IIS宿主环境。IIS回收主机进程以响应各种外部和内部事件,从而导致专门存储在内存中的任何易失性状态丢失。IIS中承载的服务应将其状态存储在进程外部(例如,在数据库中),或者存储在内存中的缓存中,如果发生应用程序回收事件,则可以很容易地重新创建该缓存。

虽然可以禁用回收,但如果您需要IIS托管并且您关心状态,那么您可能应该将其放在一个持久的位置。

票数 0
EN

Stack Overflow用户

发布于 2011-06-21 12:13:20

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

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

这仍然不能保证100%的状态持久化,因为IIS可以重新启动,应用程序池可以在web.config更改时回收,等等。如果状态对你很重要,你可能希望将状态持久化到数据库中,而不是依赖于内存。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6420203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档