HttpRuntime.Cache等效于asp.net 5,MVC 6

所以我刚刚从ASP.Net 4迁移到ASP.Net 5.我现在正试图改变一个项目,以便它在新的ASP.Net中运行,但当然会出现一大堆错误。

有谁知道HttpRuntime的等效扩展是什么,因为我似乎无法在任何地方找到它。 我正在使用缓存对象客户端。

HttpRuntime.Cache[Findqs.QuestionSetName] 

‘Findqs’只是一个普通的对象

您可以使用IMemoryCache实现来缓存数据。 这有不同的实现,包括内存缓存,redis,sql server缓存等。

快速简单的实现就像这样

更新project.json文件并在dependencies项部分下添加以下2项。

 "Microsoft.Extensions.Caching.Abstractions": "1.0.0-rc1-final", "Microsoft.Extensions.Caching.Memory": "1.0.0-rc1-final" 

保存此文件将执行dnu还原,并且所需的程序集将添加到项目中。

转到Startup.cs类,通过调用ConfigureServices方法中的services.AddCaching()扩展方法来启用缓存。

 public void ConfigureServices(IServiceCollection services) { services.AddCaching(); services.AddMvc(); } 

现在,您可以通过构造函数注入将IMemoryCache注入您的lass。 该框架将为您解决具体实现并将其注入您的类构造函数。

 public class HomeController : Controller { IMemoryCache memoryCache; public HomeController(IMemoryCache memoryCache) { this.memoryCache = memoryCache; } public IActionResult Index() { var existingBadUsers = new List(); var cacheKey = "BadUsers"; List badUserIds = new List { 5, 7, 8, 34 }; if(memoryCache.TryGetValue(cacheKey, out existingBadUsers)) { var cachedUserIds = existingBadUsers; } else { memoryCache.Set(cacheKey, badUserIds); } return View(); } } 

理想情况下,您不希望在控制器中混合使用缓存。 您可以将其移动到另一个类/层,以保持一切可读和可维护。 你仍然可以在那里进行构造函数注入。

官方asp.net mvc repo有更多样本供您参考。