2010-04-19 63 views
1

看来WAS会在每个服务实现中调用ServiceHostFactory.CreateHost()一次。 WAS如何管理ServiceHost/ServiceHostFactory的生命周期?我们有一个自定义的工厂/主机偶尔会被重新初始化。我想知道WAS是否正在自行回收,或者有其他原因来重新创建ServiceHostFactory/ServiceHost。我猜ServiceHostFactory被激发了AppDomain并且是一个单身人士,有人可以确认吗?WAS/IIS如何管理ServiceHost实例?

回答

2

在检测WCF之后,看起来IIS/WAS会为每个端点创建一个ServiceHostFactory。从那里它将启动ServiceHosts,因为它取决于你的配置。

1

WAS管理工作进程的激活和生命周期。它管理基于消息的激活和工作流程回收,以维护应用程序资源。读你的情况,这肯定是真的。

您可以使用Single InstanceContext来处理所有客户端请求。在合同执行中添加以下属性:

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)] 

另外,请看ServiceHost启动操作,如果是在静态方法下。