2010-04-19 58 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啓動操作,如果是在靜態方法下。