2016-03-02 52 views
1

我們在.Net Framework 4.0中創建了一個帶有WCF服務的MVC應用程序。我們在Windows Server 2008和IIS 7.0中都託管了該應用程序。我的MVC應用程序向wcf服務發送請求。每3到4小時我的應用程序沒有響應。在IIS中重新啓動WCF後,它就是工作文件。WCF服務在某些時候沒有響應

我檢查事件日誌並發現「服務應用程序池」ASP.NET v4.0「的進程ID爲」xxxx「的工作進程請求回收,因爲工作進程已達到其允許的處理時間限制。

任何人都可以幫助我找出解決問題的方法。

我的應用程序池設置顯示在下面

enter image description here

+0

請看這個[答案](http://stackoverflow.com/questions/3127449/wcf-service-does-not-respond-how-to-debug/43867060#43867060)希望這將是有用的 –

回答

0

你的應用程序池必須被回收IIS由於默認配置。選擇應用程序池並在「操作」面板上,單擊「回收..」

您可以取消選中「規則時間間隔」以避免這種情況。但默認值是1740分鐘,這意味着29小時,請檢查設置到您的AppPool的值,因爲這不符合您3到4小時的問題。

無論如何,回收不會使應用程序不可用,它會在新請求時重新啓動。

如果您的AppPool沒有啓動,可能會發生一些錯誤,請檢查事件日誌以在AppPool重新啓動期間找出任何錯誤。

+1

我有檢查事件日誌但沒有在事件查看器中看到任何事件日誌。當我重新啓動或在IIS中回收我的應用程序時,它工作正常。 – Bharat

0

如果您可以升級到至少IIS 7.5,則可以使用IIS應用程序初始化。這將允許您的應用程序定期回收,這對於其穩定性來說是一件好事,而不會定期不可用。這是因爲Application Initialisation與IIS工作進程重疊,在殺死舊工作進程之前啓動並初始化新的工作進程。它奇蹟般地處理兩個工作進程之間的重新路由請求。

+0

感謝PateAC,我用8.0升級了IIS,並檢查了應用程序池回收。這是很好的功能。但我的問題仍未解決。 – Bharat

+0

要啓用應用程序初始化,還需要在應用程序上設置PreloadEnabled = true,並在應用程序池上設置StartMode = alwaysRunning。另請注意,應用程序初始化是IIS 8中的一個可選模塊 - 您可能會發現需要在Windows功能中啓用它。以下是谷歌可以找到的許多指導性文章之一的URL:https://blogs.msdn.microsoft.com/benjaminperkins/2014/01/07/configure-the-iis-application-initialization-module/ – PeteAC