2017-05-09 3 views
0

webform.aspx에서 아래 코드를 사용하면 프로젝트를 중지 한 후에도 값을 가질 수 있습니다. 그러나 MVC로 작업 할 때 컨트롤러를 사용할 수 없습니다. 왜 그런지 말해 줄 수 있습니까?캐시 MVC 관리가 값을 유지할 수 없습니다.

DateTime? date1 = (DateTime?) HttpContext.Cache [ "MyKey"];

 if (!date1.HasValue) // date1 == null 
     { 
      date1 = DateTime.Now; 
      HttpContext.Cache.Insert("MyKey", date1, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration); 
     } 

답변

0

키가 처음 null 인 경우 Insert이 될 수 없습니다. 이 시도 :

date1 = DateTime.Now; 
if(HttpContext.Cache["MyKey"] == null){ 
    HttpContext.Cache.Insert("MyKey", date1, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration); 
} else { 
    HttpContext.Cache["MyKey"] = date1; 
} 

편집 : 나는 MVC ASP.NET 2017을 통해 하루 이상 캐시 내부의 데이터를 유지하기 위해 노력하고

int NumberofDaysToCache = 2; 
HttpContext.Cache.Insert("MyKey", date1, null, DateTime.Now.AddDays(NumberofDaysToCache), 
System.Web.Caching.Cache.NoSlidingExpiration); 
+1

프로젝트가 실행되는 한 가치를 얻을 수 있지만 예를 들어 2 일 후에 값을 갖고 싶습니다. –

+0

캐시의 수명을 2 일로 연장 할 수 있습니다. 'DateTime.Now.AddDays (2)' –

0

감사 @Dominic, I 하루가 지나도 시스템이 꺼지면 캐시가 아직 작동 중임을 의미합니다. 테스트를 위해 Visual Studio를 닫고 다시 열면 캐시 내부의 값을보고 싶습니다.

webform.aspx에서 할 수 있지만 mvc 컨트롤러에서 캐시를 사용할 때 캐시에 오류가있어이 컨텍스트에 없습니다.

관련 문제