两种微信缓存方式(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();
}
}

  

【微信开发】—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. Netty入门学习

    一.他山之石 Netty实现原理浅析 http://www.importnew.com/15656.html netty线程模型 http://www.infoq.com/cn/articles/ne ...

  2. Template function 函数模板用法

    #include<iostream> using namespace std; const double PI = 3.1415926; template <class T> ...

  3. 异步控制---实现函数asyncAll,在执行完传入数组中func1,func2,func3异步函数后,输出“end”

    实现函数asyncAll,在执行完传入数组中func1,func2,func3异步函数后,输出"end" function func1(callback) { setTimeout ...

  4. Java Native Interface 四--JNI中引用类型

    本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 JNI支持将类实例和数组类型(如jobjec ...

  5. SDN/NFV运营商商业化部署

    三大运营商发布未来网络架构,并逐步加快SDN/NFV商业化部署的步伐.中国联通发布其新一代网络架构<CUBE-Net 2.0白皮书>,并与20多家合作伙伴共同启动了“新一代网络”合作研发计 ...

  6. httpie 取代 curl

    接口测试有人喜欢postman(for windows or mac) 如果长期用linux工作,可能更喜欢命令的方式,比如curl最近深入了解了下django-rest-framwork,他们推荐了 ...

  7. 完美解决window.navigator.geolocation.getCurrentPosition,在IOS10系统中无法定位问题

    目前由于许多用户都将电话升级到了iOS系统,苹果的iOS 10已经正式对外推送,相信很多用户已经更新到了最新的系统.然而,如果web站没有及时支持https协议的话,当很多用户在iOS 10下访问很多 ...

  8. iOS 局部变量 全局变量 成员变量

    一.成员变量 : 写在类声明的大括号中的变量叫成员变量 (也叫属性/实例变量) 成员变量不可离开类 离开了类就不是成员变量 成员变量不能再定义的同事初始化 成员量只能通过对象来访问 成员变量存储在堆中 ...

  9. Java获取用户ip

    /** * 获取客户端ip地址(可以穿透代理) * * @param request * @return */ public static String getRemoteAddr(HttpServl ...

  10. sublime text 2 快捷键

    快捷键 功能 ctrl+shift+n 打开新Sublime ctrl+shift+w 关闭Sublime,关闭所有打开文件 ctrl+shift+t 重新打开最近关闭文件 ctrl+n 新建文件 c ...