2016-05-25 29 views
2

我在我的asp.net web API MVC 4中做了一個控制器動作,並且由於它的運行很長,我緩存了它的輸出5分鐘。然後讓.NET客戶端使用這個API。現在,我希望在緩存過期之前,應該在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

還有就是輸出緩存到期後自動刷新本身沒有這樣的機制。一種解決方案是創建一個工作進程或後臺作業,在某個持續時間後自動「ping」API端點(在您的情況下,可能每4.5分鐘而不是5分鐘以允許db調用/處理givedisabledusers())。

+0

是的,我想要做同樣的事情。這個工作進程將在API,客戶端或它將是一個單獨的服務?你能更具體一點嗎? –

+0

它不會在API中 - 它將在一個單獨的應用程序/服務。有很多選擇:1)你可以編寫一個小的控制檯應用程序,命中API端點並將其作爲預定作業運行。 2.)你可以編寫一個後臺服務,定期ping端點。 –

相關問題