zoukankan      html  css  js  c++  java
  • 【微信开发】—7200s限制,非数据库

    两种微信缓存方式(7200s)

    第一种是MemoryCache(缓存的分享票据)

      public static string Getjsapi_ticket(string AppID, string AppSecret)
            {
                string tt = "";
                string ticket = AddOrGetExisting<string>("ticket", delegate()
                {
    
                    string strUrl = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", AppID, AppSecret);
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUrl);
                    WebResponse response = request.GetResponse();
                    Stream resStream = response.GetResponseStream();
                    StreamReader sr = new StreamReader(resStream);
                    string result = sr.ReadToEnd();
                    string regex = ""access_token":"(?<token>.*?)"";
                    Match mt = Regex.Match(result, regex);
                    string token = "";
                    if (mt.Success)
                    {
                        token = mt.Groups["token"].Value;
                    }
                    string jsapi_url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", token);
                    HttpWebRequest jsapi_request = (HttpWebRequest)WebRequest.Create(jsapi_url);
                    WebResponse jsapi_response = jsapi_request.GetResponse();
                    Stream jsapi_resStream = jsapi_response.GetResponseStream();
                    StreamReader jsapi_sr = new StreamReader(jsapi_resStream);
                    string jsapi_result = jsapi_sr.ReadToEnd();
                    string temp = jsapi_result.Split(',')[2];
                    string jsapi_tic = temp.Split(':')[1];
                    jsapi_tic = jsapi_tic.Substring(1, jsapi_tic.Length - 2);
                    return jsapi_tic;
                },
                           new TimeSpan(0, 0, 7000)//7000秒过期
                       );
    
                return ticket;
            }
            static readonly ObjectCache cache = MemoryCache.Default;
            public static T AddOrGetExisting<T>(string key, Func<T> createNew, TimeSpan cacheDuration)
            {
                return AddOrGetExisting<T>(key, new TimeSpan(0, 0, 7000), createNew);
            }
    
            public static T AddOrGetExisting<T>(string key, TimeSpan cacheDuration, Func<T> createNew)
            {
                if (key == null) throw new ArgumentNullException("key");
                if (createNew == null) throw new ArgumentNullException("createNew");
    
                if (!cache.Contains(key))
                {
                    cache.Add(key, createNew(), DateTime.Now.Add(cacheDuration));
                }
    
                return (T)cache[key];
            }
    

      第二种HttpContext.Current.Cache(缓存的access_token)

    /// <summary>
    /// 获取公众号的ACCESS_TOKEN
    /// </summary>
    /// <returns>返回操作凭据</returns>
    public string GetAccessToken()
    {
      if (HttpContext.Current.Cache["access_token"] == null)
       {
         string para = string.Format("grant_type=client_credential&appid={0}&secret={1}", AppID, AppSecret);
         string results = SendHTTPRequest("POST", "https://api.weixin.qq.com/cgi-bin/token", para);
         JObject obj = (JObject)JsonConvert.DeserializeObject(results);
    
         //设置access_token的过期
    
         Cache cache = HttpContext.Current.Cache;
         cache.Insert("access_token", obj["access_token"].ToString(), null, DateTime.Now.AddSeconds(7000),
          System.Web.Caching.Cache.NoSlidingExpiration);
    
         return HttpContext.Current.Cache["access_token"].ToString();
       }
       else
       {
         return HttpContext.Current.Cache["access_token"].ToString();
       }
    }
    

      

  • 相关阅读:
    Symfony2 学习笔记之报错
    Symfony2学习笔记之数据校验
    Symfony2学习笔记之HTTP Cache
    Symfony2学习笔记之表单
    Symfony2 学习笔记之插件格式
    Symfony2学习笔记之数据库操作
    Symfony2 学习笔记之内部构件
    Symfony2 学习笔记之模板使用
    让VIEWSTATE从页面中完全消失(小技巧)
    打包bat等文件成exe,双击运行不显示dos窗口,exe不报毒
  • 原文地址:https://www.cnblogs.com/lb12081116/p/5226721.html
Copyright © 2011-2022 走看看