由于公司的项目集成了盛派微信SDK,SDK可以在你运用的项目中通过NuGet包来安装,根据需要安装你需要的SDK即可。一般来说安装的如下图所示:
然后在你的项目中,如果是.net Framework版本,在global文件的Application_Start进行一些配置:
#region CO2NET缓存,微信配置 全局注册 /*CO2NET 全局注册开始 * 建议按照以下顺序进行注册 */ //设置全局 Debug 状态 var isGLobalDebug = true; var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug); //CO2NET 全局注册,必须!! IRegisterService register = RegisterService.Start(senparcSetting).UseSenparcGlobal(false, null); //缓存配置 #region 配置和使用 Redis -- DPBMARK Redis //配置全局使用Redis缓存(按需,独立) var redisConfigurationStr = senparcSetting.Cache_Redis_Configuration; var useRedis = !string.IsNullOrEmpty(redisConfigurationStr) && redisConfigurationStr != "Redis配置"; if (useRedis)//这里为了方便不同环境的开发者进行配置,做成了判断的方式,实际开发环境一般是确定的,这里的if条件可以忽略 { /* 说明: * 1、Redis 的连接字符串信息会从 Config.SenparcSetting.Cache_Redis_Configuration 自动获取并注册,如不需要修改,下方方法可以忽略 /* 2、如需手动修改,可以通过下方 SetConfigurationOption 方法手动设置 Redis 链接信息(仅修改配置,不立即启用) */ Senparc.CO2NET.Cache.Redis.Register.SetConfigurationOption(redisConfigurationStr); //以下会立即将全局缓存设置为 Redis //Senparc.CO2NET.Cache.Redis.Register.UseKeyValueRedisNow();//键值对缓存策略(推荐) //Senparc.CO2NET.Cache.Redis.Register.UseHashRedisNow();//HashSet储存格式的缓存策略 //也可以通过以下方式自定义当前需要启用的缓存策略 //CacheStrategyFactory.RegisterObjectCacheStrategy(() => RedisObjectCacheStrategy.Instance);//键值对 //CacheStrategyFactory.RegisterObjectCacheStrategy(() => RedisHashSetObjectCacheStrategy.Instance);//HashSet } //如果这里不进行Redis缓存启用,则目前还是默认使用内存缓存 #endregion // DPBMARK_END /* 微信配置开始 * 建议按照以下顺序进行注册 */ //设置微信 Debug 状态 var isWeixinDebug = true; var senparcWeixinSetting = SenparcWeixinSetting.BuildFromWebConfig(isWeixinDebug); //AccessTokenContainer.Register(Senparc.Weixin.Config.SenparcWeixinSetting.WeixinAppId, Senparc.Weixin.Config.SenparcWeixinSetting.Component_Appid); //微信全局注册,必须!! register.UseSenparcWeixin(senparcWeixinSetting, senparcSetting) .RegisterMpAccount(senparcWeixinSetting, "【日本村外教最日语】公众号"); #endregion
以上是最原始版本,后来公司服务器做了负载均衡,上诉代码的缓存机制是存放服务器本地的,这就导致缓存在各个服务器之间乱了,所以就需要开启分布式缓存,这里我们开启的是redis缓存机制。
Senparc.CO2NET.Cache.Redis.Register.UseKeyValueRedisNow();//键值对缓存策略(推荐)
将这句代码加上后,系统报出异常,提示StackExchange.Redis版本不对,于是乎我升级了项目的redis版本,然后版本问题成功解决了,又爆出了没有开启注册缓存机制:
当前扩展缓存策略没有进行注册:Senparc.Weixin.Cache.ContainerCacheStrategyDoma 异常原因:https://weixin.senparc.com/QA-551/
于是乎,百度了很久,当然提示提示也给了一个链接,进去之后对比了代码,也没发现漏写了什么。最终的最终,发现是因为在NuGet少安装了一个类库,
需要安装盛派SDK的redis类库,而且Wexin.MP类库也需要更新到最新,当然所有sengparc的类库都更新为最新最好。如此再调试将缓存机制立即应用为redis就不会出问题了。