2016-05-25 8 views
2

asp.net web API MVC 4でコントローラーアクションを行い、実行時間が長かったので、出力を5分間キャッシュしました。その後、このAPIを使用するように.NETクライアントを作成しました。今私は、キャッシュが期限切れになる前にアクションをWeb APIで自動的に再度呼び出される必要があります。そのたびに、クライアントが取得するキャッシュ出力が得られます。どうやってするか? Web API自体からコントローラーアクションを呼び出すことができますか?毎回キャッシュされるようにするか、ASP.NETクライアントで行う必要がありますか? ここはweb apiのアクションです。サーバー上のキャッシュの結果に私はStrathweb.CacheOutput 0.5.0パッケージasp.net web APIのコントローラアクションを定期的に呼び出してください。

[System.Web.Http.HttpGet] 
[CacheOutput(ClientTimeSpan = 300, ServerTimeSpan = 300)] 
    public HttpResponseMessage givedisabledusers() 
    { 

     var result = dbh.givedisabledusers(); 
     return Request.CreateResponse(HttpStatusCode.OK, result); 
    } 

答えて

0

を使用しています出力キャッシュが有効期限後に自動的に更新され、そのようなメカニズムはありません。 1つの解決策は、特定の期間(おそらく5分ではなく4.5分ごとに、db呼び出し/処理givedisabledusers()を可能にする)の後でAPIエンドポイントを自動的に 'ping'するワーカープロセスまたはバックグラウンドジョブを作成することです。

+0

私は同じことをしたい。このワーカープロセスはAPI、クライアント、または別のサービスになりますか?もっと具体的にお聞かせください。 –

+0

APIには含まれません。別のアプリ/サービスになります。多くのオプションがあります:1.)APIエンドポイントにヒットする小さなコンソールアプリケーションを作成し、これをスケジュールされたジョブとして実行できます。 2.)エンドポイントを定期的にpingするバックグラウンドサービスを作成することができます。 –

関連する問題