Example #1
0
        /// <summary>
        /// 运行默认注册流程
        /// </summary>
        protected void RegisterStart()
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);//支持 GB2312

            //注册开始
            RegisterService register;

            //注册 CON2ET 全局
            var senparcSetting = new SenparcSetting()
            {
                IsDebug = true
            };

            var mockEnv = new Mock <IWebHostEnvironment>();

            mockEnv.Setup(z => z.ContentRootPath).Returns(() => UnitTestHelper.RootPath);
            register = Senparc.CO2NET.AspNet.RegisterServices.RegisterService.Start(mockEnv.Object, senparcSetting);

            RegisterServiceCollection();

            register.UseSenparcGlobal(false);

            //注册微信
            //var senparcWeixinSetting = new SenparcWeixinSetting(true);
            register.UseSenparcWeixin(_senparcWeixinSetting, senparcSetting).RegisterTenpayRealV3(_senparcWeixinSetting, "微信 V3");
            register.ChangeDefaultCacheNamespace("Senparc.Weixin Test Cache");
        }
Example #2
0
        /// <summary>
        /// 注册 IServiceCollection 和 MemoryCache
        /// </summary>
        public void RegisterServiceCollection()
        {
            ServiceCollection = new ServiceCollection();
            var configBuilder = new ConfigurationBuilder();
            //configBuilder.AddJsonFile("appsettings.json", false, false);
            var config = configBuilder.Build();

            Configuration = config;


            ServiceCollection.AddSenparcGlobalServices(config);

            _senparcSetting = new SenparcSetting()
            {
                IsDebug = true
            };
            config.GetSection("SenparcSetting").Bind(_senparcSetting);

            ServiceCollection.AddMemoryCache();//使用内存缓存


            MvcCoreBuilder = ServiceCollection.AddMvcCore();

            //WebApiEngine wae = new WebApiEngine(new FindWeixinApiService(), 400);
            //wae.InitDynamicApi(builder, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..", "App_Data"));

            ServiceProvider = ServiceCollection.BuildServiceProvider();
        }
Example #3
0
 /// <summary>
 /// 开始 Senparc.Weixin SDK 初始化参数流程
 /// </summary>
 /// <param name="registerService"></param>
 /// <param name="senparcWeixinSetting">微信全局设置参数,必填</param>
 /// <param name="senparcSetting">用于提供 SenparcSetting.Cache_Redis_Configuration 和 Cache_Memcached_Configuration 两个参数,如果不使用这两种分布式缓存可传入null</param>
 /// <returns></returns>
 public static IRegisterService UseYoYoSenparcWeixin(
     this IRegisterService registerService,
     SenparcWeixinSetting senparcWeixinSetting,
     SenparcSetting senparcSetting = null)
 {
     return(registerService.UseSenparcWeixin(senparcWeixinSetting, senparcSetting));
 }
Example #4
0
        /// <summary>
        /// 运行默认注册流程
        /// </summary>
        protected void RegisterStart()
        {
            //注册开始
            RegisterService register;

            //注册 CON2ET 全局
            var senparcSetting = new SenparcSetting()
            {
                IsDebug = true
            };

#if NETCOREAPP2_0 || NETCOREAPP2_1
            var mockEnv = new Mock <IHostingEnvironment>();
            mockEnv.Setup(z => z.ContentRootPath).Returns(() => UnitTestHelper.RootPath);
            register = RegisterService.Start(mockEnv.Object, senparcSetting);

            RegisterServiceCollection();
#else
            register = RegisterService.Start(senparcSetting);
#endif

            Func <IList <IDomainExtensionCacheStrategy> > func = () =>
            {
                var list = new List <IDomainExtensionCacheStrategy>();
                list.Add(LocalContainerCacheStrategy.Instance);
                list.Add(RedisContainerCacheStrategy.Instance);
                //list.Add(MemcachedContainerCacheStrategy.Instance);
                return(list);
            };
            register.UseSenparcGlobal(false, func);

            //注册微信
            var senparcWeixinSetting = new SenparcWeixinSetting(true);
            register.UseSenparcWeixin(senparcWeixinSetting);
        }
        public void Fd()
        {
            /* CO2NET 全局注册开始
             * 建议按照以下顺序进行注册
             */

            //设置全局 Debug 状态
            var isGLobalDebug  = true;
            var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug);

            //CO2NET 全局注册,必须!!
            IRegisterService register = RegisterService.Start(senparcSetting)
                                        .UseSenparcGlobal(false, null);

            /* 微信配置开始
             * 建议按照以下顺序进行注册
             */

            //设置微信 Debug 状态
            var isWeixinDebug        = true;
            var senparcWeixinSetting = SenparcWeixinSetting.BuildFromWebConfig(isWeixinDebug);

            //微信全局注册,必须!!
            register.UseSenparcWeixin(senparcWeixinSetting, senparcSetting);
        }
Example #6
0
        /// <summary>
        /// YoYo Senparc CO2NET 全局缓存配置(按需)
        /// </summary>
        /// <param name="registerService"></param>
        /// <param name="applicationBuilder"></param>
        /// <param name="senparcSetting"></param>
        /// <param name="customCacheNamespace">当同一个分布式缓存同时服务于多个网站(应用程序池)时,可以使用命名空间将其隔离(非必须)</param>
        /// <param name="configRedisAction">配置全局使用Redis缓存(按需,独立),此函数返回结果为true将启用redis</param>
        /// <returns></returns>
        public static IRegisterService UseYoYoSenparcCO2NETGlobalCache(
            this IRegisterService registerService,
            IApplicationBuilder applicationBuilder,
            SenparcSetting senparcSetting,
            string customCacheNamespace = null,
            Func <SenparcSetting, bool> configRedisAction = null)
        {
            // 全局缓存配置(按需)
            if (!string.IsNullOrWhiteSpace(customCacheNamespace))
            {
                // 当同一个分布式缓存同时服务于多个网站(应用程序池)时,可以使用命名空间将其隔离(非必须)
                registerService.ChangeDefaultCacheNamespace(customCacheNamespace);
            }


            // 配置全局使用Redis缓存
            if (configRedisAction == null)
            {
                return(registerService);
            }

            // 回调函数,返回true表示使用redis
            if (configRedisAction(senparcSetting))
            {
                applicationBuilder.UseSenparcWeixinCacheRedis();
            }

            return(registerService);
        }
Example #7
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            /* CO2NET 全局注册开始
             * 建议按照以下顺序进行注册
             */

            //设置全局 Debug 状态
            var isGLobalDebug  = true;
            var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug);

            //CO2NET 全局注册,必须!!
            IRegisterService register = RegisterService.Start(senparcSetting).UseSenparcGlobal(false, null);

            /* 微信配置开始
             * 建议按照以下顺序进行注册
             */

            //设置微信 Debug 状态
            var isWeixinDebug        = true;
            var senparcWeixinSetting = SenparcWeixinSetting.BuildFromWebConfig(isWeixinDebug);

            //微信全局注册,必须!!
            register.UseSenparcWeixin(senparcWeixinSetting, senparcSetting);
        }
Example #8
0
        protected void Application_Start()
        {
            //初始化信息
            MPBasicSetting.GetBasicSetting();
            //MCComm.DBHelper.GetWebSqlConnection();
            Sunnysoft.DAL.ActiveRecordDBHelper.InitSessionFactory();
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            var isGLobalDebug  = true;                                                     //设置全局 Debug 状态
            var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug);
            var register       = RegisterService.Start(senparcSetting).UseSenparcGlobal(); //CO2NET全局注册,必须!

            var isWeixinDebug        = true;                                               //设置微信 Debug 状态
            var senparcWeixinSetting = SenparcWeixinSetting.BuildFromWebConfig(isWeixinDebug);

            register.UseSenparcWeixin(senparcWeixinSetting, senparcSetting);////微信全局注册,必须!

            ThreadUtility.Register();
            Senparc.Weixin.MP.Containers.AccessTokenContainer.RegisterAsync(MPBasicSetting.AppID, MPBasicSetting.AppSecret, "公众号注册");
            Senparc.Weixin.MP.Containers.JsApiTicketContainer.RegisterAsync(MPBasicSetting.AppID, MPBasicSetting.AppSecret, "公众号JSSDK注册");
        }
Example #9
0
        // -- DPBMARK_END

        // -- DPBMARK Memcached
        /// <summary>
        /// 初步判断当前配置是否满足使用 Memcached(根据是否已经修改了默认配置字符串判断)
        /// </summary>
        /// <param name="senparcSetting"></param>
        /// <returns></returns>
        private bool UseMemcached(SenparcSetting senparcSetting, out string memcachedConfigurationStr)
        {
            memcachedConfigurationStr = senparcSetting.Cache_Memcached_Configuration;
            var useMemcached = !string.IsNullOrEmpty(memcachedConfigurationStr) && memcachedConfigurationStr != "#{Cache_Memcached_Configuration}#";

            return(useMemcached);
        }
Example #10
0
        /// <summary>
        /// 微信信息缓存到Redis
        /// </summary>
        /// <param name="app"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public static IApplicationBuilder UseSenparcWeiXinWithRedis(this IApplicationBuilder app, IOptions <CacheOptions> options, IOptions <WechatAccountOptions> wechatAccoutnOpt)
        {
            var senparcsetting = new SenparcSetting
            {
                Cache_Redis_Configuration = options.Value.Servers,
                DefaultCacheNamespace     = "TakedaWechatOP",
                IsDebug = false
            };

            AccessTokenContainer.Register(wechatAccoutnOpt.Value.AppId, wechatAccoutnOpt.Value.AppSecret, wechatAccoutnOpt.Value.WechatName);

            var register = Senparc.CO2NET.RegisterServices.RegisterService.Start(senparcsetting).UseSenparcGlobal();

            Senparc.CO2NET.Cache.Redis.Register.SetConfigurationOption(options.Value.Servers);
            Senparc.CO2NET.Cache.Redis.Register.UseKeyValueRedisNow();
            app.UseSenparcWeixinCacheRedis();
            var senparcWeixinSetting = new SenparcWeixinSetting
            {
                IsDebug = false,
                Items   = new SenparcWeixinSettingItemCollection()
            };

            Senparc.Weixin.Config.SenparcWeixinSetting = senparcWeixinSetting;

            Senparc.NeuChar.Register.RegisterApiBind(true);
            return(app);
        }
Example #11
0
        /// <summary>
        /// 获取扩展缓存策略
        /// </summary>
        /// <returns></returns>
        private IList <IDomainExtensionCacheStrategy> GetExCacheStrategies(SenparcSetting senparcSetting)
        {
            var exContainerCacheStrategies = new List <IDomainExtensionCacheStrategy>();

            senparcSetting = senparcSetting ?? new SenparcSetting();
            return(exContainerCacheStrategies);
        }
Example #12
0
        /// <summary>
        /// 获取扩展缓存策略
        /// </summary>
        /// <returns></returns>
        private IList <IDomainExtensionCacheStrategy> GetExCacheStrategies(SenparcSetting senparcSetting)
        {
            var exContainerCacheStrategies = new List <IDomainExtensionCacheStrategy>();

            senparcSetting = senparcSetting ?? new SenparcSetting();

            //注意:以下两个 if 判断仅作为演示,方便大家添加自定义的扩展缓存策略,
            //      只要进行了 register.UseSenparcWeixin() 操作,Container 的缓存策略下的 Local、Redis 和 Memcached 系统已经默认自动注册,无需操作!

            #region 演示扩展缓存注册方法

            //判断Redis是否可用
            var redisConfiguration = senparcSetting.Cache_Redis_Configuration;
            if ((!string.IsNullOrEmpty(redisConfiguration) && redisConfiguration != "Redis配置"))
            {
                exContainerCacheStrategies.Add(RedisContainerCacheStrategy.Instance);
            }

            //判断Memcached是否可用
            var memcachedConfiguration = senparcSetting.Cache_Memcached_Configuration;
            if ((!string.IsNullOrEmpty(memcachedConfiguration) && memcachedConfiguration != "Memcached配置"))
            {
                exContainerCacheStrategies.Add(MemcachedContainerCacheStrategy.Instance);//TODO:如果没有进行配置会产生异常
            }

            #endregion

            //扩展自定义的缓存策略

            return(exContainerCacheStrategies);
        }
Example #13
0
        /// <summary>
        /// 判断当前配置是否满足使用 Redis(根据是否已经修改了默认配置字符串判断)
        /// </summary>
        /// <param name="senparcSetting"></param>
        /// <returns></returns>
        internal bool UseRedis(SenparcSetting senparcSetting, out string redisConfigurationStr)
        {
            redisConfigurationStr = senparcSetting.Cache_Redis_Configuration;
            var useRedis = !string.IsNullOrEmpty(redisConfigurationStr) && redisConfigurationStr != "#{Cache_Redis_Configuration}#" /*默认值,不启用*/;

            return(useRedis);
        }
Example #14
0
        /// <summary>
        /// 获取扩展缓存策略
        /// </summary>
        /// <returns></returns>
        private IList <IDomainExtensionCacheStrategy> GetExCacheStrategies(SenparcSetting senparcSetting)
        {
            var exContainerCacheStrategies = new List <IDomainExtensionCacheStrategy>();

            senparcSetting = senparcSetting ?? new SenparcSetting();

            //注意:以下两个 if 判断仅作为演示,方便大家添加自定义的扩展缓存策略,

            #region 演示扩展缓存注册方法

            /*
             *
             * //判断Redis是否可用
             * var redisConfiguration = senparcSetting.Cache_Redis_Configuration;
             * if ((!string.IsNullOrEmpty(redisConfiguration) && redisConfiguration != "Redis配置"))
             * {
             *  exContainerCacheStrategies.Add(RedisContainerCacheStrategy.Instance);//自定义的扩展缓存
             * }
             *
             * //判断Memcached是否可用
             * var memcachedConfiguration = senparcSetting.Cache_Memcached_Configuration;
             * if ((!string.IsNullOrEmpty(memcachedConfiguration) && memcachedConfiguration != "Memcached配置"))
             * {
             *  exContainerCacheStrategies.Add(MemcachedContainerCacheStrategy.Instance);//TODO:如果没有进行配置会产生异常
             * }
             */

            #endregion

            //扩展自定义的缓存策略

            return(exContainerCacheStrategies);
        }
        /// <summary>
        /// 启用微信
        /// </summary>
        /// <param name="env"></param>
        public static void UseWechat(IWebHostEnvironment env, SenparcSetting senparcSetting)
        {
            var registerService = senparcSetting.UseYoYoSenparcCO2NET(env.ContentRootPath);

            registerService = registerService.UseYoYoSenparcCO2NETGlobalCache(null, null)
                              .RegisterTraceLog(ConfigTraceLog)//配置TraceLog
                              .UseYoYoSenparcWeixin(null, senparcSetting);
        }
Example #16
0
        /// <summary>
        /// 开始 Senparc.CO2NET SDK 初始化参数流程
        /// </summary>
        /// <returns></returns>
        public static RegisterService Start(SenparcSetting senparcSetting)
        {
            var register = new RegisterService(senparcSetting);

            //如果不注册此线程,则AccessToken、JsTicket等都无法使用SDK自动储存和管理。
            register.RegisterThreads();//默认把线程注册好

            return(register);
        }
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            Senparc.WebSocket.WebSocketConfig.RegisterRoutes(RouteTable.Routes);
            Senparc.WebSocket.WebSocketConfig.RegisterMessageHandler <CustomWebSocketMessageHandler>();

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            var dt1 = DateTime.Now;

            /*
             * CO2NET 全局注册开始
             * 建议按照以下顺序进行注册
             */

            /*
             * CO2NET 是从 Senparc.Weixin 分离的底层公共基础模块,经过了长达 6 年的迭代优化。
             * 关于 CO2NET 在所有项目中的通用设置可参考 CO2NET 的 Sample:
             * https://github.com/Senparc/Senparc.CO2NET/blob/master/Sample/Senparc.CO2NET.Sample.netcore/Startup.cs
             */


            //设置全局 Debug 状态
            var isGLobalDebug = true;
            //全局设置参数,将被储存到 Senparc.CO2NET.Config.SenparcSetting
            var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug);
            //也可以通过这种方法在程序任意位置设置全局 Debug 状态:
            //Senparc.CO2NET.Config.IsDebug = isGLobalDebug;

            //CO2NET 全局注册,必须!!
            IRegisterService register = RegisterService.Start(senparcSetting).UseSenparcGlobal();

            /* 微信配置开始
             * 建议按照以下顺序进行注册
             */

            //设置微信 Debug 状态
            var isWeixinDebug = true;
            //全局设置参数,将被储存到 Senparc.Weixin.Config.SenparcWeixinSetting
            var senparcWeixinSetting = SenparcWeixinSetting.BuildFromWebConfig(isWeixinDebug);

            //也可以通过这种方法在程序任意位置设置微信的 Debug 状态:
            //Senparc.Weixin.Config.IsDebug = isWeixinDebug;

            register.UseSenparcWeixin(senparcWeixinSetting, Senparc.CO2NET.Config.SenparcSetting);

            WeixinTraceConfig();//配置微信日志记录
            RegisterWeixinCache();
            RegisterSenparcWeixin(register, senparcWeixinSetting);

            var dt2 = DateTime.Now;

            Senparc.Weixin.WeixinTrace.SendCustomLog("系统日志", "系统已经启动,启动时间:" + (dt2 - dt1).TotalMilliseconds + "ms");
        }
        void Init()
        {
            SenparcSetting   senparcSetting = new SenparcSetting(Options.WeChatDevOptions.IsDebug);
            IRegisterService register       = RegisterService.Start(senparcSetting).UseSenparcGlobal(); //CO2NET全局注册,必须!

            SenparcWeixinSetting senparcWeixinSetting = new SenparcWeixinSetting(Options.WeChatDevOptions.IsDebug);

            register.UseSenparcWeixin(senparcWeixinSetting, senparcSetting); ////微信全局注册,必须!
            AccessTokenContainer.RegisterAsync(Options.WeChatBaseOptions.AppId, Options.WeChatBaseOptions.Appsecret).GetAwaiter().GetResult();
        }
Example #19
0
        /// <summary>
        /// 从 Web.Config 文件自动生成 SenparcSetting
        /// </summary>
        /// <param name="isDebug">设置 CO2NET 全局的 Debug 状态 </param>
        /// <returns></returns>
        public static SenparcSetting BuildFromWebConfig(bool isDebug)
        {
            var senparcSetting = new SenparcSetting(isDebug);

            senparcSetting.DefaultCacheNamespace         = System.Configuration.ConfigurationManager.AppSettings["DefaultCacheNamespace"];
            senparcSetting.SenparcUnionAgentKey          = System.Configuration.ConfigurationManager.AppSettings["SenparcUnionAgentKey"];
            senparcSetting.Cache_Redis_Configuration     = System.Configuration.ConfigurationManager.AppSettings["Cache_Redis_Configuration"];
            senparcSetting.Cache_Memcached_Configuration = System.Configuration.ConfigurationManager.AppSettings["Cache_Memcached_Configuration"];
            return(senparcSetting);
        }
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);


            //设置全局 Debug 状态
            var isGLobalDebug = true;
            //全局设置参数,将被储存到 Senparc.CO2NET.Config.SenparcSetting
            var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug);
            //也可以通过这种方法在程序任意位置设置全局 Debug 状态:
            //Senparc.CO2NET.Config.IsDebug = isGLobalDebug;


            //CO2NET 全局注册,必须!!
            IRegisterService register = RegisterService.Start(senparcSetting).UseSenparcGlobal();


            #region 配置和使用 Redis          -- DPBMARK Redis

            //配置全局使用Redis缓存(按需,独立)
            var redisConfigurationStr = senparcSetting.Cache_Redis_Configuration;
            var useRedis = !string.IsNullOrEmpty(redisConfigurationStr) && redisConfigurationStr != "Redis配置";
            if (useRedis)//这里为了方便不同环境的开发者进行配置,做成了判断的方式,实际开发环境一般是确定的,这里的if条件可以忽略
            {
                Senparc.CO2NET.Cache.Redis.Register.SetConfigurationOption(redisConfigurationStr);

                Senparc.CO2NET.Cache.Redis.Register.UseKeyValueRedisNow();//键值对缓存策略(推荐)
            }

            #endregion                        // DPBMARK_END


            /* 微信配置开始
             * 建议按照以下顺序进行注册
             */

            //设置微信 Debug 状态
            var isWeixinDebug = true;
            //全局设置参数,将被储存到 Senparc.Weixin.Config.SenparcWeixinSetting
            var senparcWeixinSetting = SenparcWeixinSetting.BuildFromWebConfig(isWeixinDebug);
            //也可以通过这种方法在程序任意位置设置微信的 Debug 状态:
            //Senparc.Weixin.Config.IsDebug = isWeixinDebug;

            //微信全局注册,必须!!
            register.UseSenparcWeixin(senparcWeixinSetting, senparcSetting)
            //注册公众号(可注册多个)                                                -- DPBMARK MP
            .RegisterMpAccount(senparcWeixinSetting, "【LY】测试公众号")    // DPBMARK_END

            ;

            /* 微信配置结束 */
        }
Example #21
0
        /// <summary>
        /// 开始 Senparc.CO2NET SDK 初始化参数流程(.NET Core)
        /// </summary>
        /// <param name="senparcSetting"></param>
        /// <param name="contentRootPath">asp.net core应用中IHostingEnvironment对象的ContentRootPath</param>
        /// <returns></returns>
        public static IRegisterService Start(SenparcSetting senparcSetting, string contentRootPath = "")
        {
            if (!string.IsNullOrWhiteSpace(contentRootPath))
            {
                Config.RootDictionaryPath = contentRootPath;
            }
            var registerService = new YoYoSenparcRegisterService(senparcSetting);

            registerService.RegisterThreads();
            return(registerService);
        }
Example #22
0
        protected void Session_Start(object sender, EventArgs e)
        {
            var isGLobalDebug  = true;                                                     //设置全局 Debug 状态
            var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug);
            var register       = RegisterService.Start(senparcSetting).UseSenparcGlobal(); //CO2NET全局注册,必须!

            var isWeixinDebug        = true;                                               //设置微信 Debug 状态
            var senparcWeixinSetting = SenparcWeixinSetting.BuildFromWebConfig(isWeixinDebug);

            register.UseSenparcWeixin(senparcWeixinSetting, senparcSetting);////微信全局注册,必须!
        }
Example #23
0
        /// <summary>
        /// 注册
        /// </summary>
        public static void Register()
        {
            var register = RegisterService.Start(SenparcSetting.BuildFromWebConfig(true)).UseSenparcGlobal();                  //CO2NET全局注册,必须!

            register.UseSenparcWeixin(SenparcWeixinSetting.BuildFromWebConfig(true), SenparcSetting.BuildFromWebConfig(true)); ////微信全局注册,必须!
            Dictionary <string, string> Deploy = GetDeploy();

            foreach (var item in Deploy)
            {
                AccessTokenContainer.Register(item.Key, item.Value, "WX_" + item.Key);
            }
        }
Example #24
0
        public Program()
        {
            var configBuilder  = new ConfigurationBuilder();
            var senparcSetting = new SenparcSetting();
            var config         = configBuilder.Build();

            _serviceCollection = new ServiceCollection();
            _serviceCollection.AddSenparcGlobalServices(config);//Senparc.CO2NET 全局注册
            _serviceProvider = _serviceCollection.BuildServiceProvider();
            IRegisterService register = RegisterService.Start(senparcSetting)
                                        .UseSenparcGlobal();
        }
Example #25
0
 public static IServiceCollection AddWork(this IServiceCollection services, IConfiguration configuration)
 {
     senparcSetting       = configuration.Get <SenparcSetting>();
     senparcWeixinSetting = configuration.Get <SenparcWeixinSetting>();
     services.Configure <WorkSetting>(configuration.GetSection("WorkSetting"))
     .Configure <MpSetting>(configuration.GetSection("MpSetting"))
     .AddSenparcGlobalServices(configuration)
     .AddSenparcWeixinServices(configuration)
     .AddSingleton <IWorkApi, WorkApi>()
     .AddSingleton <MpApi>();
     return(services);
 }
Example #26
0
        /// <summary>
        /// 开始YoYo Senparc.CO2NET SDK 初始化参数流程
        ///
        /// (关于 UseYoYoSenparc() 的更多用法见 CO2NET Demo 中的 UseSenparcGlobal:https://github.com/Senparc/Senparc.CO2NET/blob/master/Sample/Senparc.CO2NET.Sample.netcore/Startup.cs)
        /// </summary>
        /// <param name="senparcSetting"></param>
        /// <param name="contentRootPath">提供网站根目录(env.ContentRootPath,env类型为IHostingEnvironment)</param>
        /// <param name="autoScanExtensionCacheStrategies">是否自动扫描全局的扩展缓存(会增加系统启动时间)</param>
        /// <param name="extensionCacheStrategiesFunc">
        /// <para>需要手动注册的扩展缓存策略</para>
        /// <para>(LocalContainerCacheStrategy、RedisContainerCacheStrategy、MemcacheContainerCacheStrategy已经自动注册),</para>
        /// <para>如果设置为 null(注意:不是委托返回 null,是整个委托参数为 null),则自动使用反射扫描所有可能存在的扩展缓存策略</para>
        /// </param>
        /// <returns></returns>
        public static IRegisterService UseYoYoSenparcCO2NET(
            this SenparcSetting senparcSetting,
            string contentRootPath = "",
            bool autoScanExtensionCacheStrategies = false,
            Func <IList <IDomainExtensionCacheStrategy> > extensionCacheStrategiesFunc = null)
        {
            var registerService = YoyoAbpWechatRegisterService.Start(senparcSetting, contentRootPath);

            CacheStrategyDomainWarehouse.AutoScanDomainCacheStrategy(autoScanExtensionCacheStrategies, extensionCacheStrategiesFunc);

            return(registerService);
        }
Example #27
0
        /// <summary>
        /// 开始 Senparc.CO2NET SDK 初始化参数流程
        /// </summary>
        /// <returns></returns>
        public static RegisterService Start(SenparcSetting senparcSetting)
        {
            var register = new RegisterService(senparcSetting);

            //提供网站根目录
            Senparc.CO2NET.Config.RootDictionaryPath = AppDomain.CurrentDomain.BaseDirectory;

            //如果不注册此线程,则AccessToken、JsTicket等都无法使用SDK自动储存和管理。
            register.RegisterThreads();//默认把线程注册好

            return(register);
        }
Example #28
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterWebSocket();//微信注册WebSocket模块(按需,必须执行在RouteConfig.RegisterRoutes()之前)

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);


            /*
             * CO2NET 全局注册开始
             * 建议按照以下顺序进行注册
             */

            /*
             * CO2NET 是从 Senparc.Weixin 分离的底层公共基础模块,经过了长达 6 年的迭代优化。
             * 关于 CO2NET 在所有项目中的通用设置可参考 CO2NET 的 Sample:
             * https://github.com/Senparc/Senparc.CO2NET/blob/master/Sample/Senparc.CO2NET.Sample.netcore/Startup.cs
             */


            //设置全局 Debug 状态
            var isGLobalDebug = true;
            //全局设置参数,将被储存到 Senparc.CO2NET.Config.SenparcSetting
            var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug);
            //也可以通过这种方法在程序任意位置设置全局 Debug 状态:
            //Senparc.CO2NET.Config.IsDebug = isGLobalDebug;


            //CO2NET 全局注册,必须!!
            IRegisterService register = RegisterService.Start(senparcSetting)
                                        .UseSenparcGlobal(false, () => GetExCacheStrategies(senparcSetting))   //这里没有 ; 下面接着写

                                        #region 注册分自定义(分布式)缓存策略(按需,如果需要,必须放在第一个)

                                        // 当同一个分布式缓存同时服务于多个网站(应用程序池)时,可以使用命名空间将其隔离(非必须)
                                        // 也可以在 senparcSetting.DefaultCacheNamespace 属性上进行设置
                                        .ChangeDefaultCacheNamespace("DefaultCO2NETCache")

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

                                        //配置Memcached缓存
                                        .RegisterCacheMemcached(
                new Dictionary <string, int>() /* { "localhost", 9101 }*/ }
Example #29
0
        protected void Application_Start()
        {
            RouteConfig.RegisterRoutes(RouteTable.Routes);


            var isGLobalDebug  = false;                                                    //设置全局 Debug 状态
            var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug);
            var register       = RegisterService.Start(senparcSetting).UseSenparcGlobal(); //CO2NET全局注册,必须!

            var isWeixinDebug        = false;                                              //设置微信 Debug 状态
            var senparcWeixinSetting = SenparcWeixinSetting.BuildFromWebConfig(isWeixinDebug);

            register.UseSenparcWeixin(senparcWeixinSetting, senparcSetting);////微信全局注册,必须!
        }
Example #30
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterWebSocket();//微信注册WebSocket模块(按需,必须执行在RouteConfig.RegisterRoutes()之前)

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);


            /* CO2NET 全局注册开始
             * 建议按照以下顺序进行注册
             */

            //设置全局 Debug 状态
            var isGLobalDebug = true;
            //全局设置参数,将被储存到 Senparc.CO2NET.Config.SenparcSetting
            var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug);
            //也可以通过这种方法在程序任意位置设置全局 Debug 状态:
            //Senparc.CO2NET.Config.IsDebug = isGLobalDebug;


            //CO2NET 全局注册,必须!!
            IRegisterService register = RegisterService.Start(senparcSetting)
                                        .UseSenparcGlobal(false, () => GetExCacheStrategies(senparcSetting))   //这里没有 ; 下面接着写

                                        #region 注册线程,在 RegisterService.Start() 中已经自动注册,此处也可以省略

                                        .RegisterThreads() //启动线程,RegisterThreads()也可以省略,在Start()中已经自动注册

                                        #endregion

                                        #region 注册分自定义(分布式)缓存策略(按需,如果需要,必须放在第一个)

                                        // 当同一个分布式缓存同时服务于多个网站(应用程序池)时,可以使用命名空间将其隔离(非必须)
                                        // 也可以在 senparcSetting.DefaultCacheNamespace 属性上进行设置
                                        .ChangeDefaultCacheNamespace("DefaultCO2NETCache")

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

                                        //配置Memcached缓存
                                        .RegisterCacheMemcached(
                new Dictionary <string, int>() /* { "localhost", 9101 }*/ }