WeiXinMPSDK icon indicating copy to clipboard operation
WeiXinMPSDK copied to clipboard

和NCC的另一组件CAP的集成问题

Open DUWENINK opened this issue 2 years ago • 5 comments

此版块专为反馈 bug 及提交需求服务,不负责解答开发问题,请勿发表开发问题, 如果您需要这方面的帮助,请移步问答社区:https://weixin.senparc.com/QA

问题描述

和NCC的另一组件CAP的集成问题,cap参考链接 我是打算把一些消息推送到Rabbitmq然后调用AccessTokenContainer.GetToken方法的 发现了一些问题

重现问题步骤(如果可以)
  1. 按照官方Samples指南配置好缓存等配置(已经确定在service中正常使用)
  2. 发布消息到CAP image 3.处理订阅消息(同一个应用程序aspnetcore)中 4.报错 PA{$VQ$BSL`F5 X7$~DAK)U
模块对应的 .net 版本
  • [x] .net 7.0
开发环境
  • [ ] Visual Studio 2019
  • [x] Visual Studio 2022
  • [ ] Visual Studio Code
  • [ ] 其他:
缓存环境
  • [x ] Redis 版本:最新 image
系统环境
  • [x] Windows,版本:
  • [ ] Linux,版本:
  • [ ] Mac,版本:
  • [ ] 其他:
联系方式

Email:[email protected]

(也可将问题地址及联系方式发送到 [email protected]

发布问题后,请保持对 issue 的关注,有时会有需要进一步沟通的信息,很长时间内没有得到答复的 issue 将被关闭。

DUWENINK avatar Mar 12 '22 01:03 DUWENINK

PS:如果在控制器层调用一次AccessTokenContainer.GetToken方法这这里订阅处理不会出现异常

DUWENINK avatar Mar 12 '22 01:03 DUWENINK

堆栈信息跟踪 DotNetCore.CAP.Internal.SubscribeDispatcher[0] An exception occurred while executing the subscription method. Topic:WorkWeixin.Events.UserBind, Id:541898955224236035 DotNetCore.CAP.Internal.SubscriberExecutionFailedException: 当前扩展缓存策略没有进行注册:Senparc.Weixin.Cache.ContainerCacheStrategyDomain,Senparc.CO2NET.Cache.LocalObjectCacheStrategy,解决方案请参考:https://weixin.senparc.com/QA-551 ---> Senparc.CO2NET.Exceptions.UnregisteredDomainCacheStrategyException: 当前扩展缓存策略没有进行注册:Senparc.Weixin.Cache.ContainerCacheStrategyDomain,Senparc.CO2NET.Cache.LocalObjectCacheStrategy,解决方案请参考:https://weixin.senparc.com/QA-551 at Senparc.CO2NET.Cache.CacheStrategyDomainWarehouse.GetDomainExtensionCacheStrategy(IBaseObjectCacheStrategy baseObjectCacheStrategy, ICacheStrategyDomain cacheStrategyDomain) at Senparc.CO2NET.Cache.CacheStrategyFactory.GetExtensionCacheStrategyInstance(ICacheStrategyDomain cacheStrategyDomain) at Senparc.Weixin.Cache.ContainerCacheStrategyFactory.GetContainerCacheStrategyInstance() at Senparc.Weixin.Containers.BaseContainer1.get_Cache() at Senparc.Weixin.Containers.BaseContainer1.CheckRegistered(String shortKey) at Oxygen.Core.Service.AppService.RabbitMqService.ProcessWorkWeixinBindMessage(WorkWeixinUserBindMessage message) in C:\Users\DUWENINK\source\repos\codestore\duwenink\src\Oxygen.Core.Service\AppService\RabbitMqService.cs:line 185 at Microsoft.Extensions.Internal.ObjectMethodExecutor.<>c__DisplayClass33_0.<WrapVoidMethod>b__0(Object target, Object[] parameters) at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters) at DotNetCore.CAP.Internal.SubscribeInvoker.ExecuteWithParameterAsync(ObjectMethodExecutor executor, Object class, Object[] parameter) at DotNetCore.CAP.Internal.SubscribeInvoker.InvokeAsync(ConsumerContext context, CancellationToken cancellationToken) at DotNetCore.CAP.Internal.SubscribeDispatcher.InvokeConsumerMethodAsync(MediumMessage message, ConsumerExecutorDescriptor descriptor, CancellationToken cancellationToken) --- End of inner exception stack trace --- at Senparc.CO2NET.Cache.CacheStrategyDomainWarehouse.GetDomainExtensionCacheStrategy(IBaseObjectCacheStrategy baseObjectCacheStrategy, ICacheStrategyDomain cacheStrategyDomain) at Senparc.CO2NET.Cache.CacheStrategyFactory.GetExtensionCacheStrategyInstance(ICacheStrategyDomain cacheStrategyDomain) at Senparc.Weixin.Cache.ContainerCacheStrategyFactory.GetContainerCacheStrategyInstance() at Senparc.Weixin.Containers.BaseContainer1.get_Cache() at Senparc.Weixin.Containers.BaseContainer1.CheckRegistered(String shortKey) at Oxygen.Core.Service.AppService.RabbitMqService.ProcessWorkWeixinBindMessage(WorkWeixinUserBindMes

DUWENINK avatar Mar 12 '22 01:03 DUWENINK

检查一下,你是不是注册的时候缺少了一些代码,例如 services.AddMemoryCache();

这个错误一般只在没有找到明确的缓存策略的情况下发生。

JeffreySu avatar Mar 12 '22 08:03 JeffreySu

检查一下,你是不是注册的时候缺少了一些代码,例如 services.AddMemoryCache();

这个错误一般只在没有找到明确的缓存策略的情况下发生。 1.在controller中使用正常 2.在CAP的回调中第一次使用异常,如果有在controller中有正常调用记录则也会正常, 我用的是redis缓存,参考demo 完全设置的

DUWENINK avatar Mar 12 '22 08:03 DUWENINK

那还有一种可能是并不是缓存本身的错误,而是在获取的过程中出错了,并且我看到抛错的不是 SDK 内部的异常,是这个:DotNetCore.CAP.Internal.SubscriberExecutionFailedException,检查一下这个异常抛出的地方的逻辑代码。

JeffreySu avatar Mar 12 '22 17:03 JeffreySu

@DUWENINK 你好,请问你的问题解决了吗

SenparcHai avatar Mar 27 '24 03:03 SenparcHai

谢谢 ,已经解决,

DUWENINK avatar Mar 28 '24 02:03 DUWENINK