ABP 使用cache缓存

using Abp.Application.Services.Dto;
using Abp.Runtime.Caching;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Schema;
using Senparc.CO2NET.HttpUtility;
using Senparc.Weixin.CommonAPIs.ApiHandlerWapper;
using Senparc.Weixin.MP.Containers;
using Senparc.Weixin.MP.Entities;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;

namespace AbpProject.WeiXinMPCache
{
    public class MPCacheAppService : AbpProjectAppServiceBase, IMPCacheAppService
    {
        /// <summary>
        /// appid
        /// </summary>
        private readonly string AppIdSAddress = "WeiXinMP:AppID";
        /// <summary>
        /// appsecret
        /// </summary>
        private readonly string AppSecretAddress = "WeiXinMP:AppSecret";
        /// <summary>
        /// 获取token的路径
        /// </summary>
        private readonly string AccTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";


        private readonly ICacheManager _cacheManager;
        private readonly IConfiguration _appConfiguration;

        public MPCacheAppService(IConfiguration appConfiguration, ICacheManager cacheManager)
        {
            _appConfiguration = appConfiguration;
            _cacheManager = cacheManager;
        }


        /// <summary>
        /// 获取公众微信号的token
        /// </summary>
        /// <returns></returns>
        public async Task<string> GetAccessToken()
        {
            var acctoken = await _cacheManager.GetCache("WeiXinMP").GetOrDefaultAsync("AccessToken");
            if (acctoken == null || string.IsNullOrEmpty(acctoken.ToString()))
            {
                var appId = _appConfiguration[AppIdSAddress];
                var appSecret = _appConfiguration[AppSecretAddress];
                var url = string.Format(AccTokenUrl, appId, appSecret);
                var result = HttpClientHelper<AccessTokenResult>.Get(url,new AccessTokenResult());
                if (result != null)
                {
                    await _cacheManager.GetCache("WeiXinMP").SetAsync("AccessToken", result.access_token, TimeSpan.FromHours(2));
                    return result.access_token;
                }
            }
            return acctoken.ToString();
        }

    }
}
原文地址:https://www.cnblogs.com/LmuQuan/p/11233639.html