0

分布式缓存token不一致的问题

kanghua258· 于 27天前

(*** 此版块专为反馈bug及提交需求服务,不负责解答开发问题,请勿发表开发问题,
如果您需要这方面的帮助,请移步问答社区:https://weixin.senparc.com/QA ***)

问题描述
重现问题步骤(如果可以)
...
...
微信官方文档 URL
微信官方文档快照(直接复制关键内容到下方)
发现问题的模块
 Senparc.Weixin 版本:
 Senparc.Weixin.MP 版本:
 Senparc.Weixin.MP.MVC 版本:
 Senparc.Weixin.Open 版本:
- [ ] Senparc.Weixin.QY 版本:
 Senparc.Weixin.Work 版本:
 Senparc.Weixin.WxOpen 版本:
 Senparc.Weixin.Cache.Redis 版本:
 Senparc.Weixin.Cache.Memcached 版本:
 其他模块:
模块对应的 .net 版本
 .net 3.5
 .net 4.0
[x ] .net 4.5
 .net standard 2.0
 .net core 1.x
 .net core 2.x
开发环境
 Visual Studio 2010
 Visual Studio 2010 (SP1)
 Visual Studio 2012
 Visual Studio 2013
 Visual Studio 2015
 Visual Studio 2017
 其他:
缓存环境
[] 服务器内存缓存(默认)
[ x] Redis 版本:
 Memcached 版本:
 其他
联系方式
Email:491134648@163.com
现有两个应用,一个基于.net framework,依赖环境如下
<package id="Senparc.Weixin" version="4.20.3" targetFramework="net461" /> <package id="Senparc.Weixin.Cache.Redis" version="1.5.1" targetFramework="net461" /> <package id="Senparc.Weixin.Cache.Redis.RedLock" version="1.1.0" targetFramework="net461" /> <package id="Senparc.Weixin.MP" version="14.12.3" targetFramework="net461" />
集成代码如下
`public static class RegisterServiceUtil
{
///


/// 开始 Senparc.Weixin SDK 初始化参数流程
///
///
public static void Start()
{
var register = new RegisterService();
       //如果不注册此线程,则AccessToken、JsTicket等都无法使用SDK自动储存和管理。
       register
       #region 注册分自定义(分布式)缓存策略(按需,如果需要,必须放在第一个)

           // 当同一个分布式缓存同时服务于多个网站(应用程序池)时,可以使用命名空间将其隔离(非必须)
           .ChangeDefaultCacheNamespace("DefaultWeixinCache")

           //配置Redis缓存
           .RegisterCacheRedis(
               ConfigurationManager.AppSettings["Cache_Redis_Configuration"],
               redisConfiguration => (!string.IsNullOrEmpty(redisConfiguration))
                                    ? RedisObjectCacheStrategy.Instance
                                    : null)

       #endregion
                                    .RegisterThreads()

           .Init();//默认把线程注册好

       
   }
   public static IRegisterService Init(this IRegisterService service)
   {
       #region 注册日志(按需)


       #region 注册公众号或小程序(按需)
       //注册公众号
       return service
         
           .RegisterMpAccount(
               ConfigurationManager.AppSettings["WeixinAppId"],
               ConfigurationManager.AppSettings["WeixinAppSecret"],
               ConfigurationManager.AppSettings["InstanceName"])
           //注册最新微信支付版本(V3)
           .RegisterTenpayV3(() =>
           {
               //提供微信支付信息
               var tenPayV3_MchId = ConfigurationManager.AppSettings["TenPayV3_MchId"];
               var tenPayV3_Key = ConfigurationManager.AppSettings["TenPayV3_Key"];
               var tenPayV3_AppId = ConfigurationManager.AppSettings["TenPayV3_AppId"];
               var tenPayV3_AppSecret = ConfigurationManager.AppSettings["TenPayV3_AppSecret"];
               var tenPayV3_TenpayNotify = ConfigurationManager.AppSettings["TenPayV3_TenpayNotify"];
               var tenPayV3Info = new TenPayV3Info(tenPayV3_AppId, tenPayV3_AppSecret,
                   tenPayV3_MchId, tenPayV3_Key, tenPayV3_TenpayNotify);
               WechatConfig.Instance.Init(tenPayV3_AppId, tenPayV3_AppSecret
                   , tenPayV3_MchId, tenPayV3_Key, ConfigurationManager.AppSettings["PkPath"]);
               return tenPayV3Info;
           });



       #endregion//配置TraceLog

       #endregion
   }

}`
另一应用基于asp.net core 2.0
依赖如下
<PackageReference Include="Senparc.Weixin" Version="6.1.1" /> <PackageReference Include="Senparc.Weixin.Cache.Redis" Version="2.2.1" /> <PackageReference Include="Senparc.Weixin.mp" Version="16.3.3" /> <PackageReference Include="Senparc.Weixin.TenPay" Version="0.2.1" />
集成代码如下
//添加Senparc.Weixin配置文件(内容可以根据需要对应修改) services.Configure<SenparcWeixinSetting>(Configuration.GetSection("SenparcWeixinSetting")) .AddSenparcGlobalServices(Configuration)//Senparc.CO2NET 全局注册 .AddSenparcWeixinServices(Configuration);//Senparc.Weixin 注册;
app.UseStaticFiles() .UseSession() .UseMvcWithAreaRoute() .UseWeChat(env,senparcSetting,senparcWeixinSetting);
`public static IApplicationBuilder UseWeChat(this IApplicationBuilder app, IHostingEnvironment env,IOptions senparcSetting, IOptions senparcWeixinSetting, bool isDebug=false)
{
var exContainerCacheStrategies = new List();
exContainerCacheStrategies.Add(RedisContainerCacheStrategy.Instance);
IRegisterService register = RegisterService.Start(env, senparcSetting.Value)
//关于 UseSenparcGlobal() 的更多用法见 CO2NET Demo:https://github.com/Senparc/Senparc.CO2NET/blob/master/Sample/Senparc.CO2NET.Sample.netcore/Startup.cs
.UseSenparcGlobal();
#region 缓存配置

       // 当同一个分布式缓存同时服务于多个网站(应用程序池)时,可以使用命名空间将其隔离(非必须)
       register.ChangeDefaultCacheNamespace("DefaultWeixinCache");
       Senparc.CO2NET.Cache.Redis.Register.SetConfigurationOption(senparcSetting.Value.Cache_Redis_Configuration);
       #endregion
       Senparc.CO2NET.Cache.Redis.Register.UseKeyValueRedisNow();
       #region 注册日志(按需,建议)
       app.UseSenparcWeixinCacheRedis();
       register.UseSenparcWeixin(senparcWeixinSetting.Value, senparcSetting.Value);
       register.RegisterMpAccount(senparcWeixinSetting.Value, "Farm.Wechat");
       register.RegisterTenpayV3(senparcWeixinSetting.Value, "Farm.Wechat");
       #region 注册公众号或小程序(按需)

       //注册公众号(可注册多个)

       //注册最新微信支付版本(V3)(可注册多个)
       //记录到同一个 SenparcWeixinSettingItem 对象中

       //除此以外,仍然可以在程序任意地方注册公众号或小程序:
       //AccessTokenContainer.Register(appId, appSecret, name);//命名空间:Senparc.Weixin.MP.Containers
       #endregion
       #endregion
     
       return app;`
调用两个项目获取的token分别如下
13_bfhl5kNI3ey0L7cUfB5ltTsDu-D3dHdBIND6V_8mtVMU14mGKN8BRKdzAokWj8xQmYcLHRzBDP_rMytuBBaR3fkHztSnOPfPuCind8RMuaCzCDPP0ovE-Ywjh7CyAONuM6MXVqdQePks4XnRMASiADAWKC
13_N6_fE5k3ru3Lk3tKfB5ltTsDu-D3dHdBIND6V_8mtVMU14mGKN8BRKdzAomiH915339Cc1LqUTzgcBfoKI0duAMjY7v33ejJ43Zxe7eMYNTFv999F6fqHjxFjg44zR_T3p92cUjPjL31yQVRCTViADATKM

(也可将问题地址及联系方式发送到 www.jeffrey.su@gmail.com)

发布问题后,请保持对 issue 的关注,有时会有需要进一步沟通的信息,很长时间内没有得到答复的 issue 将被关闭。
您尚未登陆,请:网站登录 or 微信登陆
共收到 1 条回复
0

Senparc 27天前

见:https://github.com/JeffreySu/WeiXinMPSDK/issues/1405


热门话题 更多
  • 最新
  • 推荐

升级SDK时遇到的问题

gis008 5 个回复 • 63天前

服务商平台支付问题

phooker 3 个回复 • 159天前

开发小程序看哪个sample

moplay 2 个回复 • 139天前

QQ群
  • 1群:300313885 (2000人群 已满)
  • 2群:293958349 (1000人群 已满)
  • 3群:342319110 (2000人群 已满)
  • 4群:372212092 (500人群 已满)
  • 5群:377815480 (1000人群 已满)
  • 6群:425898825 (1000人群 已满)
  • 7群:482942254 (500人群 已满)
  • 8群:106230270 (500人群 已满)
  • 9群:539061281 (500人群 已满)
  • 10群(分布式缓存):246860933 Senparc.Weixin.Cache SDK 10群
  • 11群:553198593 (500人群 已满)
  • 12群(微信小程序):108830388 Senparc微信小程序 12群
  • 13群(开放平台):183424136 (500人群 已满)
  • 14群(视频学员):588231256 Senparc.Weixin SDK 14群
  • 15群:289181996 Senparc.Weixin SDK 15群
  • 16群(开放平台):860626938 [16群 开放平台]SenparcSDK
微信开发宝典:《微信开发深度解析》

由 Senparc.Weixin SDK 作者耗时两年完成的微信开发图书《微信开发深度解析:公众号、小程序高效开发秘籍》已经出版!

历经2年精心雕琢,难得的“理论 + 实战案例 + 趟坑经验”总结,
从需求分析、策划,到账号申请、验证,再到全面的 API 及开发工具,
覆盖所有开发微信公众号(含订阅号、服务号和小程序)所需关键技能!

视频教程:《微信公众号+小程序快速开发》

由盛派课堂(盛派旗下独立教育品牌)制作,《微信开发深度解析》作者苏震巍先生主讲的《微信公众号+小程序快速开发》视频课程开课啦!

课程采用“理论+实战”的教学形式,结合部分《微信开发深度解析》内容,独立于书本,包含了更多的操作演示和案例展示,帮助大家从多个维度学习微信开发以及.NET开发过程中的诸多技巧。
课程包含两大部分:
1. 微信开发基础技能
2. 公众号及小程序案例实战
共计60课时,配有番外篇,目前视频已在网易云课堂上线。