2011-04-03 44 views
1

我在IIS中使用WCF服務應用程序託管WCF服務。我將該服務配置爲單例。但在開發過程中,我發現我的serviceHost不斷關閉並重新創建。服務器跟蹤也證實了這一點。因此,我的底層服務也在不斷構建。我必須錯過一些非常愚蠢的事情。任何暗示將不勝感激。爲什麼我的服務主機不斷關閉?

更新1:

ServiceHost大約每5秒關閉一次。 AppPool有我可以檢查的任何回收日誌信息嗎?

更新2:

我打開ASP.NET healthMonitoring作爲阿米特建議,馬上發現了問題。舊的代碼庫是一個控制檯應用程序,因此它將某些內容寫入bin文件夾。但是,這會導致ServiceHost在IIS下關閉。對於我來說,主web.config是c:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config。使用procmon很容易找到。

+0

有可能是在某處引發異常。我建議在可複製的入口點使用'try/catch'子句並記錄出現的內容。 – casperOne 2011-04-03 03:26:32

+0

可能有不同的原因。當發生這種情況時,您可以在服務器跟蹤中分享確切的事件嗎?還有多久你看到你的構造函數被調用? – Naraen 2011-04-03 03:30:04

+0

@Naraen,它發生得非常快。大約每5秒鐘一次。 – 2011-04-03 14:53:37

回答

2

經過您的問題描述後,我認爲您的應用程序正在將內容寫入由ASP.NET監控的目錄中,因此IIS將回收應用程序域。

無論如何,您可以添加以下配置,該配置將記錄事件日誌中的事件以及爲什麼應用程序域重新啓動的信息。

要打開ASP.NET運行狀況監視,您可以編輯「主」web.config文件,通常位於%systemroot%\microsoft.net\framework\v2.0.50727\config中。

  • 首先,尋找<healthMonitoring>在主web.config
  • healthMonitoring節點內,找到<rules>節點
  • 內部規則,添加以下內容:

    <add name="Application Lifetime Events Default" 
        eventName="Application Lifetime Events" 
        provider="EventLogProvider" 
        profile="Default" 
        minInstances="1" 
        maxLimit="Infinite" 
        minInterval="00:01:00" 
        custom="" /> 
    
  • 重現的問題,使用源代碼ASP.NET 2.0查看應用程序事件日誌。這應該記錄爲什麼應用程序池被回收。

+0

您在現場。 – 2011-04-03 17:09:14

3

您的開發服務器上的IIS聽起來像是重新啓動或正在爲您的WCF服務回收AppPool。任何時候都會發生,你的WCF Singleton會在下一個請求中被重新創建。

+0

有一種設置可以在應用程序閒置一段時間後關閉該應用程序......這可能會導致該應用程序... – 2011-04-03 03:57:17

相關問題