通用接口ProviderToken容器,用于自动管理ProviderToken,如果过期会重新获取
        /// <summary>
        /// 注册应用凭证信息,此操作只是注册,不会马上获取Token,并将清空之前的Token。
        /// 执行此注册过程,会连带注册ProviderTokenContainer。
        /// </summary>
        /// <param name="corpId"></param>
        /// <param name="corpSecret"></param>
        public static void Register(string corpId, string corpSecret)
        {
            Update(corpId, new AccessTokenBag()
            {
                CorpId            = corpId,
                CorpSecret        = corpSecret,
                ExpireTime        = DateTime.MinValue,
                AccessTokenResult = new AccessTokenResult()
            });

            ProviderTokenContainer.Register(corpId, corpSecret);//连带注册ProviderTokenContainer
        }
        /// <summary>
        /// 注册应用凭证信息,此操作只是注册,不会马上获取Token,并将清空之前的Token。
        /// 执行此注册过程,会连带注册ProviderTokenContainer。
        /// </summary>
        /// <param name="corpId"></param>
        /// <param name="corpSecret"></param>
        /// <param name="name">标记AccessToken名称(如微信公众号名称),帮助管理员识别</param>
        public static void Register(string corpId, string corpSecret, string name = null)
        {
            using (FlushCache.CreateInstance())
            {
                Update(corpId, new AccessTokenBag()
                {
                    Name              = name,
                    CorpId            = corpId,
                    CorpSecret        = corpSecret,
                    ExpireTime        = DateTime.MinValue,
                    AccessTokenResult = new AccessTokenResult()
                });
            }

            ProviderTokenContainer.Register(corpId, corpSecret);//连带注册ProviderTokenContainer
        }