当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《HttpRuntime.Cache等效于asp.net5,MVC6》经验,为你挑选了1个好方法。

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

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

HttpRuntime.Cache[Findqs.QuestionSetName] 

'Findqs'只是一个普通的对象



1> Shyju..:

您可以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类,通过调用services.AddCaching()方法中的扩展方法来启用缓存ConfigureServices.

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有更多样本供您参考.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有