MeiRiYiCheng_2_new/netcore/YB.DeviceV2/YB.DeviceV2.WeiXin/Startup.cs

150 lines
6.7 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Furion;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Senparc.CO2NET;
using Senparc.CO2NET.AspNet;
using Senparc.Weixin;
using Senparc.Weixin.Cache.CsRedis;
using Senparc.Weixin.Entities;
using Senparc.Weixin.MP;
using Senparc.Weixin.Open;
using Senparc.Weixin.RegisterServices;
using Senparc.Weixin.WxOpen;
using YB.DeviceV2.WeiXin.WXConfig;
namespace YB.DeviceV2.WeiXin
{
public class Startup : AppStartup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddSenparcWeixinServices(App.Configuration);//Senparc.Weixin 注册(必须)
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env,
IOptions<SenparcSetting> senparcSetting, IOptions<SenparcWeixinSetting> senparcWeixinSetting)
{
var registerService = app.UseSenparcGlobal(env, senparcSetting.Value,
globalRegister =>
{
#region CO2NET
//配置全局使用Redis缓存按需独立
string redisConfigurationStr = UseRedis(senparcSetting.Value);
/* 说明:
* 1、Redis 的连接字符串信息会从 Config.SenparcSetting.Cache_Redis_Configuration 自动获取并注册,如不需要修改,下方方法可以忽略
/* 2、如需手动修改可以通过下方 SetConfigurationOption 方法手动设置 Redis 链接信息(仅修改配置,不立即启用)
*/
Senparc.CO2NET.Cache.CsRedis.Register.SetConfigurationOption(redisConfigurationStr);
//以下会立即将全局缓存设置为 Redis
Senparc.CO2NET.Cache.CsRedis.Register.UseKeyValueRedisNow();//键值对缓存策略
#endregion CO2NET
#region
globalRegister.RegisterTraceLog(ConfigTraceLog);//配置TraceLog
#endregion
}, true)
.UseSenparcWeixin(senparcWeixinSetting.Value, (weixinRegister, weixinSetting) =>
{
#region 使
//注意:如果使用非本地缓存,而不执行本块注册代码,将会收到“当前扩展缓存策略没有进行注册”的异常
//微信的 Redis 缓存,如果不使用则注释掉(开启前必须保证配置有效,否则会抛错)
weixinRegister.UseSenparcWeixinCacheCsRedis();//CsRedis
weixinRegister
#endregion 使
#region
.RegisterMpAccount(senparcWeixinSetting.Value)// DPBMARK_END
#endregion
#region
#region
.RegisterWxOpenAccount(senparcWeixinSetting.Value)
.RegisterWxOpenAccount(senparcWeixinSetting.Value.Items["bybusinessclient"], "bybusinessclient")
.RegisterWxOpenAccount(senparcWeixinSetting.Value.Items["jtbusinessclient"], "jtbusinessclient")
.RegisterWxOpenAccount(senparcWeixinSetting.Value.Items["xsxebusinessclient"], "xsxebusinessclient")
.RegisterWxOpenAccount(senparcWeixinSetting.Value.Items["abbusinessclient"], "abbusinessclient")
.RegisterWxOpenAccount(senparcWeixinSetting.Value.Items["tsbusinessclient"], "tsbusinessclient")
.RegisterWxOpenAccount(senparcWeixinSetting.Value.Items["hcbusinessclient"], "hcbusinessclient")
.RegisterWxOpenAccount(senparcWeixinSetting.Value.Items["sklmbusinessclient"], "sklmbusinessclient")
#endregion
#endregion
#region
.RegisterOpenComponent(senparcWeixinSetting.Value,
//getComponentVerifyTicketFunc
async componentAppId =>
{
var _wxservice = App.GetService<IWXConfigService>();
var component = await _wxservice.GetOpenTicketAsync(componentAppId);
return component;
},
//getAuthorizerRefreshTokenFunc
async (componentAppId, auhtorizerId) =>
{
var _wxservice = App.GetService<IWXConfigService>();
return await _wxservice.GetRefreshToken(auhtorizerId, componentAppId);
},
//authorizerTokenRefreshedFunc
(componentAppId, auhtorizerId, refreshResult) =>
{
}, "ybhdmobopen")
#endregion
;
});
}
/// <summary>
/// 配置微信跟踪日志
/// </summary>
private void ConfigTraceLog()
{
//这里设为Debug状态时/App_Data/WeixinTraceLog/目录下会生成日志文件记录所有的API请求日志正式发布版本建议关闭
//如果全局的IsDebugSenparc.CO2NET.Config.IsDebug为false此处可以单独设置true否则自动为true
Senparc.CO2NET.Trace.SenparcTrace.SendCustomLog("系统日志", "系统启动");//只在Senparc.Weixin.Config.IsDebug = true的情况下生效
//全局自定义日志记录回调
Senparc.CO2NET.Trace.SenparcTrace.OnLogFunc = () =>
{
};
//当发生基于WeixinException的异常时触发
WeixinTrace.OnWeixinExceptionFunc = ex =>
{
//加入每次触发WeixinExceptionLog后需要执行的代码
//发送模板消息给管理员 -- DPBMARK Redis
var eventService = new EventService();
eventService.ConfigOnWeixinExceptionFunc(ex); // DPBMARK_END
};
}
/// <summary>
/// 判断当前配置是否满足使用 Redis根据是否已经修改了默认配置字符串判断
/// </summary>
/// <param name="senparcSetting"></param>
/// <returns></returns>
private string UseRedis(SenparcSetting senparcSetting)
{
string redisConfigurationStr = senparcSetting.Cache_Redis_Configuration;
return redisConfigurationStr;
}
}
}