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

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

  1. public static string Getjsapi_ticket(string AppID, string AppSecret)
  2. {
  3. string tt = "";
  4. string ticket = AddOrGetExisting<string>("ticket", delegate()
  5. {
  6.  
  7. string strUrl = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", AppID, AppSecret);
  8. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUrl);
  9. WebResponse response = request.GetResponse();
  10. Stream resStream = response.GetResponseStream();
  11. StreamReader sr = new StreamReader(resStream);
  12. string result = sr.ReadToEnd();
  13. string regex = "\"access_token\":\"(?<token>.*?)\"";
  14. Match mt = Regex.Match(result, regex);
  15. string token = "";
  16. if (mt.Success)
  17. {
  18. token = mt.Groups["token"].Value;
  19. }
  20. string jsapi_url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", token);
  21. HttpWebRequest jsapi_request = (HttpWebRequest)WebRequest.Create(jsapi_url);
  22. WebResponse jsapi_response = jsapi_request.GetResponse();
  23. Stream jsapi_resStream = jsapi_response.GetResponseStream();
  24. StreamReader jsapi_sr = new StreamReader(jsapi_resStream);
  25. string jsapi_result = jsapi_sr.ReadToEnd();
  26. string temp = jsapi_result.Split(',')[2];
  27. string jsapi_tic = temp.Split(':')[1];
  28. jsapi_tic = jsapi_tic.Substring(1, jsapi_tic.Length - 2);
  29. return jsapi_tic;
  30. },
  31. new TimeSpan(0, 0, 7000)//7000秒过期
  32. );
  33.  
  34. return ticket;
  35. }
  36. static readonly ObjectCache cache = MemoryCache.Default;
  37. public static T AddOrGetExisting<T>(string key, Func<T> createNew, TimeSpan cacheDuration)
  38. {
  39. return AddOrGetExisting<T>(key, new TimeSpan(0, 0, 7000), createNew);
  40. }
  41.  
  42. public static T AddOrGetExisting<T>(string key, TimeSpan cacheDuration, Func<T> createNew)
  43. {
  44. if (key == null) throw new ArgumentNullException("key");
  45. if (createNew == null) throw new ArgumentNullException("createNew");
  46.  
  47. if (!cache.Contains(key))
  48. {
  49. cache.Add(key, createNew(), DateTime.Now.Add(cacheDuration));
  50. }
  51.  
  52. return (T)cache[key];
  53. }

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

  1. /// <summary>
  2. /// 获取公众号的ACCESS_TOKEN
  3. /// </summary>
  4. /// <returns>返回操作凭据</returns>
  5. public string GetAccessToken()
  6. {
  7.   if (HttpContext.Current.Cache["access_token"] == null)
  8. {
  9.   string para = string.Format("grant_type=client_credential&appid={0}&secret={1}", AppID, AppSecret);
  10.   string results = SendHTTPRequest("POST", "https://api.weixin.qq.com/cgi-bin/token", para);
  11.   JObject obj = (JObject)JsonConvert.DeserializeObject(results);
  12.  
  13.   //设置access_token的过期
  14.  
  15.   Cache cache = HttpContext.Current.Cache;
  16.   cache.Insert("access_token", obj["access_token"].ToString(), null, DateTime.Now.AddSeconds(7000),
  17.       System.Web.Caching.Cache.NoSlidingExpiration);
  18.  
  19.   return HttpContext.Current.Cache["access_token"].ToString();
  20. }
  21. else
  22. {
  23.   return HttpContext.Current.Cache["access_token"].ToString();
  24. }
  25. }

  

【微信开发】—7200s限制,非数据库的更多相关文章

  1. 服务器部署Java Web及微信开发调试

    参考摘抄: 阿里云部署Java网站和微信开发调试心得技巧(上):https://www.imooc.com/article/20583 阿里云部署Java网站和微信开发调试心得技巧(下):https: ...

  2. 基于fastweixin的微信开发环境搭建(一)

    由于公司业务需要,开发微信版本,才开始接触微信公众平台.在github折腾了几天,试过好几个微信sdk,最终选择fastweixin.个人觉得这个框架还是值得使用的,使用也简单.那么问题来了,很多人想 ...

  3. 续关于C#的微信开发的入门记录一

    前几天写了一篇博客<关于C#的微信开发的入门记录一>,原文地址:http://www.cnblogs.com/zhankui/p/4515905.html,现在继续完善: 目前很多小伙伴都 ...

  4. 《C#微信开发系列(3)-获取接口调用凭据》

    3.0获取接口调用凭据 ①接口说明 access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保留 ...

  5. 微信开发中网页授权access_token与基础支持的access_token异同

    问题1:网页授权access_token与分享的jssdk中的access_token一样吗? 答:不一样.网页授权access_token 是一次性的,而基础支持的access_token的是有时间 ...

  6. 使用delphi+intraweb进行微信开发1~4代码示例

    前几讲重点阐述的是使用iw进行微信开发的技术难点及解决方法,提供的都是代码片段(微信消息加解密是完整代码),实际上我始终感觉按照教程实作是掌握一门技术的最重要的方法!不过对于刚刚接触这类开发的朋友来说 ...

  7. C#微信开发-微信JS-SDK(1)之通过config接口注入权限验证配置

    官方文档是微信JS-SDK的使用步骤http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#JSSDK.E4.BD.B ...

  8. 使用Html5+C#+微信 开发移动端游戏详细教程 :(二)准备工作&开发环境

    C#开发环境:VS2013; H5开发环境:WebStorm; 数据库:mysql+navicat管理工具: 操作系统:win7: 调试:chrome浏览器 如果想在微信端上线运营游戏请做好以下准备工 ...

  9. 使用Html5+C#+微信 开发移动端游戏详细教程 :(一)序(关于作者创业失败的感想)

    说起梦想,我清楚的记得2012年7月初毕业,拿到毕业证书的那天果断买好了次日南下去深圳的绿皮火车票,500多块,26个小时车程.第二天就拖上行李到了深圳. 一开始的想法仅仅是过去想见见世面,学习点新技 ...

  10. 2016北京PHP39期 ThinkPHP Discuz Dedecms 微信开发视频教程

    2016北京PHP39期 ThinkPHP Discuz Dedecms 微信开发视频教程 所有项目均带有软件,笔记,视频,源码 日期   课程(空内容代表放假) 2015/7/10 星期五 开学典礼 ...

随机推荐

  1. scrapy 学习笔记

    1.scrapy 配合 selenium.phantomJS 抓取动态页面, 单纯的selemium 加 Firefox浏览器就可以抓取动态页面了, 但开启窗口太耗资源,而且一般服务器的linux 没 ...

  2. MySQL 备份与恢复

    一.备份/恢复策略 考虑因素有: (A) 表的存储引擎是否事务性的,在数据一致性方面不太一样. (B) 确定是全备份还是增量备份, (C) 考虑采取复制的方法做异地备份,复制不能代替备份 (D) 定期 ...

  3. 教你怎么快速配置 React

    导读 React 是一个构建用户界面的库,而它只是组成一个应用的一部分.应用还有其他的部分——风格.路由器.npm 模块.ES6 代码.捆绑和更多——这就是为什么使用它们的开发者不断流失的原因.这被称 ...

  4. overridePendingTransition简介

    1 Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画. 它包括两个部分:一部分是第一个activity退出时的动画:另外一部分时第二个activity进入时 ...

  5. liniux mint android-ndk风波

    我的安装过程sudo chmod a+x android-ndk-r10d-linux-x86_64.bin/dowonload $ ./android-ndk-r10d-linux-x86_64.b ...

  6. Angular2 NgModule

    1. 说明 典型的模块是一个内聚的代码块,用来实现某种单一的功能.Angular2应用程序本质上是有一系列模块组成的,而且Angular 本身就是一组模块库.模块主要是导出一些东西——类,函数,值,供 ...

  7. 宏定义#define的用法

    预处理#define定义函数 #include <stdio.h> #define Connect(x,y) x##y //"##"表示连接x与y int main(v ...

  8. jquery 双向select控件bootstrap Dual listbox

    http://www.cnblogs.com/hangwei/p/5040866.html       -->jquery 双向select控件bootstrap Dual listboxhtt ...

  9. win32调试打印

    void __cdecl OutputDebugStringF(const char* format ...){ va_list vlArgs; char* stringBuffer=(char*)G ...

  10. Delphi XE 10 DataSnap TCP 与 HTTP 比较

    在网络程序开发过程中,面临TCP  HTTP 的选择上往往让人陷入犹豫不决中,http的灵活和较强的穿透能力是TCP无法与之相提并论的,然而在响应速度和处理能力上却能看出后者比前者足够强大的地方.因此 ...