這是有點麻煩,但你可以通過這種方式得到它:
1.在WebApiConfig:
// Registering the IApiOutputCache.
var cacheConfig = config.CacheOutputConfiguration();
cacheConfig.RegisterCacheOutputProvider(() => new MemoryCacheDefault());
我們需要的是從GlobalConfiguration得到IApiOutputCache。 Configuration.Properties,如果我們讓默認屬性的設置發生,具有IApiOutputCache的屬性將不會在MVC BaseController請求中存在。
2.創建一個WebApiCacheHelper類:
using System;
using System.Web.Http;
using WebApi.OutputCache.Core.Cache;
using WebApi.OutputCache.V2;
namespace MideaCarrier.Bss.WebApi.Controllers
{
public static class WebApiCacheHelper
{
public static void InvalidateCache<T, U>(Expression<Func<T, U>> expression)
{
var config = GlobalConfiguration.Configuration;
// Gets the cache key.
var outputConfig = config.CacheOutputConfiguration();
var cacheKey = outputConfig.MakeBaseCachekey(expression);
// Remove from cache.
var cache = (config.Properties[typeof(IApiOutputCache)] as Func<IApiOutputCache>)();
cache.RemoveStartsWith(cacheKey);
}
}
}
3.然後,從EmployeesController.CreateEmployee行動稱之爲:
public class EmployeesController : BaseController
{
[HttpPost]
public ActionResult CreateEmployee (EmployeeEntity empInfo)
{
// your action code Here.
WebApiCacheHelper.InvalidateCache((EmployeeApiController t) => t.GetData());
}
}
我不知道,但[NoCache的]屬性可以幫助。 – 2014-12-11 06:58:36
我想要緩存,但只是想失效時,員工控制器的變化 – Suresh 2014-12-11 08:06:10