Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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));
        }
Example #4
0
 public CachePolicyProviderTests()
 {
     ServiceProviderMock = Substitute.For <IServiceProvider>();
     Sut = new CachePolicyProvider(ServiceProviderMock);
 }