2016-01-18 7 views
4

Я использую Asp.net 5 и MVC 6 ориентации рамки .Net 4.5.2 я хочу использовать следующий код:Cache Asp.Net не существует ASP.Net 5

Cache["test"] = "test"; 

или

HttpContext.Cache["test"] = "test"; 

Но оба получаются следующие ошибки, связанные с тем, что кэш не существует в этом контексте. Что мне не хватает ???

Edit:

Как ответил ниже, вы можете кэшировать с помощью интерфейса IMemoryCache, вводя его в контроллер. Это кажется новым в asp.net 5 RC1.

+0

Возможный дубликат [Как кэшировать объекты в ASP.NET MVC?] (Http://stackoverflow.com/questions/445050/how-can-i-cache-objects-in-asp-net -mvc) –

+0

Где вы обращаетесь к кешу? – Win

+0

В моем контроллере – Anokrize

ответ

2

В MVC 6 вы можете кэшировать с использованием интерфейса IMemoryCache, введя его в свой контроллер.

using Microsoft.Extensions.Caching.Memory; 

public class HomeController 
{ 
    private readonly IMemoryCache _cache; 

    public HomeController(IMemoryCache cache) 
    { 
     if (cache == null) 
      throw new ArgumentNullException("cache"); 
     _cache = cache; 
    } 

    public IActionResult Index() 
    { 
     // Get an item from the cache 
     string key = "test"; 
     object value; 
     if (_cache.TryGetValue(key, out value)) 
     { 
      // Reload the value here from wherever 
      // you need to get it from 
      value = "test"; 

      _cache.Set(key, value); 
     } 

     // Do something with the value 

     return View(); 
    } 
} 
4

Обновление вашего startup.cs, чтобы это внутри ConfigureServices:

services.AddCaching(); 

Затем обновите контроллер, чтобы иметь зависимость IMemoryCache:

public class HomeController : Controller 
{ 
    private IMemoryCache cache; 

    public HomeController(IMemoryCache cache) 
    { 
     this.cache = cache; 
    } 

Затем вы можете использовать его в своих действиях, как:

public IActionResult Index() 
    { 
     // Set Cache 
     var myList = new List<string>(); 
     myList.Add("lorem"); 
     this.cache.Set("MyKey", myList, new MemoryCacheEntryOptions()); 
     return View(); 
    } 

И

public IActionResult About() 
    { 
     ViewData["Message"] = "Your application description page."; 

     // Read cache 
     var myList= this.cache.Get("MyKey"); 

     // Use value 

     return View(); 
    } 

Много more detail на MemoryCache на dotnet.today.

Смежные вопросы