2016-08-30 110 views
1

我有以下工作調度運行每分鐘使用hangfire試圖保持我的網站活着,但它似乎仍然閒置?我剛剛檢查了遲髮型儀表盤,看起來像,因爲沒有人訪問該網站(注意這是一個Intranet應用程序)ASP.Net應用程序空閒超時和應用程序池回收

try 
{ 
    var url = "http://xyz.domain.com/myapp" 
    var request = (HttpWebRequest)WebRequest.Create(url); 
    request.Timeout = 6000; 
    request.AllowAutoRedirect = false; 
    request.Method = "HEAD"; 

    using (var response = request.GetResponse()) 
    { 
       // TO DO 
    } 
} 
catch (Exception ex) 
{ 
    logger.Error(ex, "Error in KeepAlive job"); 
} 

會使用Web客戶端更可靠的工作從來沒有在週末跑了過來presumembly或者是相同的如使用的HttpWebRequest -something象下面這樣:

WebClient webClient = new WebClient(); 
Stream stream = webClient.OpenRead("http://xyz.domain.com/myapp"); 

回答

1

默認情況下,在Web應用程序遲髮型Server實例將不會被直到第一個用戶點擊你的網站開始。更重要的是,有一些事件會在一段時間後關閉您的Web應用程序(我正在討論Idle Timeout和不同的應用程序池回收事件)。在這些情況下,您的循環任務和延遲工作將不會入隊,並且排隊的工作將不會被處理。

對於較小的網站尤其如此,因爲可能會有很長一段時間的用戶不活動。但是,如果您正在運行關鍵作業,則應確保始終運行Hangfire服務器實例以確保及時處理後臺作業。

http://docs.hangfire.io/en/latest/deployment-to-production/making-aspnet-app-always-running.html