解决“当前扩展缓存策略没有进行注册”的错误

Posted szw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决“当前扩展缓存策略没有进行注册”的错误相关的知识,希望对你有一定的参考价值。

  造成这个错误的原因是在使用 Senparc.Weixin SDK 或者 CO2NET 的扩展缓存的时候,没有对扩展缓存策略进行注册(激活)。解决方案如下:

 

.NET Framework:

  在 global.asax.cs 文件的 Application_Start() 方法中,加入代码:

RegisterService.Start()
               .UseSenparcWeixin(null, true, GetExContainerCacheStrategies)//必须

 

.NET Core:

  在 startup.cs 中 加入代码:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IOptions<SenparcSetting> senparcSetting, IOptions<SenparcWeixinSetting> senparcWeixinSetting)
{
    //...
    RegisterService.Start(env, senparcSetting.Value)
                   .UseSenparcWeixin(senparcWeixinSetting.Value, isDebug/*此处为单独用于微信的调试状态*/, () => GetExContainerCacheStrategies(senparcWeixinSetting.Value)) 
    //...
}

 

  其中的 GetExContainerCacheStrategies 委托定义如下:

/// <summary>
/// 获取Container扩展缓存策略
/// </summary>
/// <returns></returns>
private IList<IDomainExtensionCacheStrategy> GetExContainerCacheStrategies()
{
    var exContainerCacheStrategies = new List<IDomainExtensionCacheStrategy>();

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

    //判断Memcached是否可用
    var memcachedConfiguration = ConfigurationManager.AppSettings["Cache_Memcached_Configuration"];
    if ((!string.IsNullOrEmpty(memcachedConfiguration) && redisConfiguration != "Memcached配置"))
    {
        exContainerCacheStrategies.Add(MemcachedContainerCacheStrategy.Instance);
    }

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

    return exContainerCacheStrategies;
}

  GetExContainerCacheStrategies 的内容可以灵活多变,总的用意是把系统当中需要用到的扩展缓存通过这一句话进行注册:

exContainerCacheStrategies.Add(RedisContainerCacheStrategy.Instance);

  Senparc.Weixin 默认提供了三种 Container 的扩展缓存策略:

  • LocalContainerCacheStrategy
  • RedisContainerCacheStrategy
  • MemcachedContainerCacheStrategy

  其中,LocalContainerCacheStrategy 是自带的本地缓存,会自动注册,无需手动注册,另外两个是由单独的 dll 提供的,因此需要进行一次手动的注册。

以上是关于解决“当前扩展缓存策略没有进行注册”的错误的主要内容,如果未能解决你的问题,请参考以下文章

NDK: ant 错误 [javah] Exception in thread "main" java.lang.NullPointerException 多种解决办法(代码片段

代码片段 PHP,预期文件结尾,我错在哪里?

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段

Choose unique values for the 'webAppRootKey' context-param in your web.xml files! 错误的解决(代码片段

片段中的 Xamarin Android Google 地图错误