(*** 此版块专为反馈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 将被关闭。