ABP 使用cache缓存

Posted lmuquan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
        

    

 

以上是关于ABP 使用cache缓存的主要内容,如果未能解决你的问题,请参考以下文章

ABP源码分析十三:缓存Cache实现

ABP vNext 缓存使用

基于DDD的.NET开发框架 - ABP缓存Caching实现

[Architect] ABP(现代ASP.NET样板开发框架) Caching

ABP缓存示例

[Abp 源码分析]缓存管理