public void SetCachePolicyProvider_Roundtrips() { // Arrange CachePolicyProvider provider = new CachePolicyProvider(); HttpConfiguration config = new HttpConfiguration(); // Act config.SetCachePolicyProvider(provider); ICachePolicyProvider actual = config.GetCachePolicyProvider(); // Assert Assert.Same(provider, actual); }
/// <summary> /// Gets the <see cref="Microsoft.Azure.Mobile.Server.Cache.ICachePolicyProvider"/> registered with the current <see cref="System.Web.Http.HttpConfiguration" />. /// </summary> /// <param name="config">The current <see cref="System.Web.Http.HttpConfiguration"/>.</param> /// <returns>The registered instance.</returns> public static ICachePolicyProvider GetCachePolicyProvider(this HttpConfiguration config) { if (config == null) { throw new ArgumentNullException("config"); } ICachePolicyProvider provider = null; if (!config.Properties.TryGetValue(CachePolicyProviderKey, out provider)) { provider = new CachePolicyProvider(); config.Properties[CachePolicyProviderKey] = provider; } return(provider); }
/// <summary> /// 获取缓存策略 /// </summary> /// <param name="context">MVC 请求上下文</param> /// <param name="action">Action 信息</param> /// <param name="parameters">Action 参数</param> /// <returns>缓存策略</returns> protected override CachePolicy CreateCachePolicy(ControllerContext context, ActionDescriptor action, IDictionary <string, object> parameters) { if (CachePolicyProvider != null) { return(CachePolicyProvider.CreateCachePolicy(context, action, parameters)); } var httpMethod = context.HttpContext.Request.HttpMethod; if (!httpMethod.EqualsIgnoreCase("get") && !httpMethod.EqualsIgnoreCase("header"))//如果不是GET或Header请求,都不予缓存。 { return(null); } var provider = context.Controller as IMvcCachePolicyProvider; if (provider == null) { var _provider = context.Controller as ICachePolicyProvider; if (_provider != null) { provider = new MvcCachePolicyProviderWrapper(_provider); } } var policy = provider.CreateCachePolicy(context, action, parameters); if (policy != null) { return(policy); } return(MvcEnvironment.CreateCachePolicy(context, action, parameters)); }
public CachePolicyProviderTests() { ServiceProviderMock = Substitute.For <IServiceProvider>(); Sut = new CachePolicyProvider(ServiceProviderMock); }