2016-08-30 37 views
1

ハングファイアを使用して毎分実行して自分のサイトを有効にしても、アイドル状態になっているようです。 I Webクライアントがより信頼できる使用して、または、それは同じである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"); 
} 

(それは、イントラネットアプリケーションの注意)でしょうが、単にhangfireダッシュボードをチェックし、誰がサイトを訪問していないため、ジョブのように見えますが、presumembly週末に走ったことがありません以下のようにHttpWebRequestの-somethingを使用して:最初のユーザーがあなたのサイトに到達するまで

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

答えて

1

をデフォルトでは、Webアプリケーション内のHangfire Serverインスタンスは開始されません。さらに、ある時間後にあなたのWebアプリケーションをダウンさせるいくつかのイベントがあります(私はIdle Timeoutとさまざまなアプリケーションプールのリサイクルイベントについて話しています)。このような場合、定期的なタスクと遅延したジョブはエンキューされず、エンキューされたジョブは処理されません。

これは、ユーザーの不在時間が長くなる可能性があるため、特に小規模なサイトに当てはまります。しかし、クリティカルジョブを実行している場合は、バックグラウンドジョブのインタイム処理を保証するために、Hangfire Serverインスタンスが常に稼働していることを確認する必要があります。

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

関連する問題