我正在尝试实现基于ObjectCache的FileCache(https://github.com/acarteas/FileCache)。我正在尝试检查缓存对象是否存在,或者在需要时添加它并返回。但是,如果对象不存在,则不执行委托,并引发错误:[...]中的类型'myNamespace.Controllers.ListController + <> c__DisplayClass0_0'未标记为可序列化。
我尝试过的内容(简体):
private string generateString(int? Id)
{
return "String";
}
public ActionResult GetSomething(int? Id)
{
var cacheFilePath = $"{AppDomain.CurrentDomain.BaseDirectory}{"\\cache"}";
var cache = new FileCache(cacheFilePath, false, TimeSpan.FromSeconds(30));
if (purgeCache)
cache.Remove($"CacheKey{Id}");
Func<string> createString = () => generateString(Id);
var myString = (string) cache.AddOrGetExisting($"CacheKey{Id}", createString, new CacheItemPolicy() { AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(30) });
return new JsonStringResult(myString);
}
好的,现在我尝试用Serializable指定委托createString,但这不起作用。有人可以指出我正确的方向吗?
本质上我想要:-运行一条语句,返回generateString(123)的先前输出;如果它不存在或已过期,则应重新生成它。
隔江千里
相关分类