2016-05-25 30 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端点。 –

相关问题