3

在使用 CachingFramework.Redis 时,我试图将对象插入到键、字段哈希中......

enter code here
var map = new MyMapping
{
   DataSourceId = source.DataSourceId,
   ExternalId = source.ExternalId,
   StoreId = source.StoreId ?? 0,
   LastConnection = source.LastConnection,
   ApiKey = source.ApiKey
};
Context.Cache.SetHashed("MyRedisKey", "MyFieldKey", map, TimeSpan.FromHours(1));

但是,当我尝试恢复散列值时......

var MyCachedValue = Context.Cache.GetHashed<MyMapping>(("MyRedisKey", "MyFieldKey");

我得到错误...

“Microsoft.Azure.WebJobs.Host.FunctionInvocationException:执行函数时出现异常:MyFunction ---> System.Runtime.Serialization.SerializationException:找不到程序集'MySolution.MyProject.MyService,版本=1.0.0.0,文化=中性, PublicKeyToken=null'。\r\n 在异步 Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.FunctionInvocationFilterInvoker.InvokeAsync(Object instance,Object[] arguments)\r\n 在异步 Microsoft.Azure.WebJobs.Host.Executors .FunctionExecutor.InvokeAsync(IFunctionInvoker 调用者,ParameterHelper parameterHelper,CancellationTokenSource timeoutTokenSource,CancellationTokenSource functionCancellationTokenSource,Boolean throwOnTimeout,TimeSpan timerInterval,IFunctionInstance 实例)\r\n ....

4

1 回答 1

1

您是否在不同的程序集中设置和检索值?看起来情况可能就是这样。

在这种情况下,您需要Map在一个共享程序集中定义,该程序集由设置值的项目和获取值的项目引用。

  1. 吸气剂项目
  2. 塞特计划
  3. 共享模型

1 和 2 都应该引用 3,这就是您应该定义存储在缓存中的对象的地方。

于 2018-01-10T19:29:07.397 回答