在ASP中使用IDistributedCache和Redis.. NET 5/MVC 6 -类型或命名空间'不存

本文关键字:类型 命名空间 不存 MVC ASP IDistributedCache NET Redis | 更新日期: 2023-09-27 17:49:48

我正在尝试在MVC 6中使用Redis缓存,但我不能让我的项目构建。

我遵循了https://github.com/aspnet/Caching/tree/dev/samples上的例子-有一个IDistributedCache样本和一个Redis样本。然而,这并不完全清楚,因为Redis示例不是一个web应用程序。

我有这个在我的项目。json依赖性:

    "Microsoft.Framework.Cache.Memory": "1.0.0-beta3",
    "Microsoft.Framework.Caching.Distributed": "1.0.0-*",
    "Microsoft.Framework.Caching.Redis": "1.0.0-*",

我用这个来获取我的包:

kpm install microsoft . framework . cache . distributed

kpm install microsoft . framework . cache . redis

两个命令都工作并返回OK。

在我的启动中,我正在尝试以下内容:

 services.AddSingleton<IMemoryCache, MemoryCache>();
 services.AddSingleton<IDistributedCache, RedisCache>();

当尝试构建或运行时,给出的错误是:

Startup.cs(10,27):错误CS0234:类型或命名空间名称为"Caching"在命名空间"Microsoft"中不存在。框架(你错过了吗?程序集引用?)Startup.cs(11,27):错误CS0234:类型或命名空间名称"Caching"不存在"微软。框架(您是否缺少程序集引用?)Startup.cs(25,35):错误CS0246:类型或命名空间名称找不到"IDistributedCache"(您是否错过了使用。指令还是程序集引用?)Startup.cs(25,54):错误CS0246:找不到类型或命名空间名称"RedisCache"缺少using指令或程序集引用?)

现在显然我有错误的参考-但什么是正确的参考?我直接从示例中复制名称空间?我尝试切换到Microsoft.Cache.Distributed,这也不起作用(并与github冲突)

我有一种感觉,这与没有正确的K版本有关,也许这是解决办法-升级到最新版本。在framework_cache . memory和framework_cache . distributed之间有一个不匹配,我看到github关于命名空间更改的注释。

如果有人能指出走出这个迷宫的路,我将不胜感激。

在ASP中使用IDistributedCache和Redis.. NET 5/MVC 6 -类型或命名空间'不存

下面的答案适用于1.0.0-beta4版本的缓存库,对应于这里:https://github.com/aspnet/Caching/tree/1.0.0-beta4

IMemoryCacheMicrosoft.Framework.Caching.Memory命名空间下,IDistributedCacheMicrosoft.Framework.Caching.Distributed命名空间下。

依赖项是这样的:

"dependencies": { 
    "Microsoft.Framework.Caching.Memory": "1.0.0-beta4",
    "Microsoft.Framework.Caching.Distributed": "1.0.0-beta4",
    "Microsoft.Framework.Caching.Redis": "1.0.0-beta4"
}

那么Microsoft.Framework.Cache.Memory就是Microsoft.Framework.Caching.Memory