2016-07-18 9 views
0

Ich habe folgende Anfrage:Cache WebClient Anfrage im Speicher

  WebClient client = new WebClient(); 
     client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 
     var data = client.DownloadString("http://finance.yahoo.com/webservice/v1/symbols/IBM,%5EIXIC/quote?format=json&view=detail"); 

     StringBuilder builder = new StringBuilder(); 
     builder.Append("<script type=\"text/javascript\">"); 
     builder.Append("stockQuotes = new Object();"); 
     builder.Append(data); 
     builder.Append("</script>"); 

     ltrData.Text = builder.ToString(); 

ist es eine Möglichkeit, die Antwort im Speicher für 30 Minuten zwischenspeichern kann? Wenn ja, wie bitte?

Antwort

0

War in der Lage, es mit den folgenden Funktionen arbeiten .. hoffe, es hilft anderen zu einem bestimmten Zeitpunkt.

es wie folgt aufrufen:

var jsonObject1 = JsonConvert.DeserializeObject<Rootobject>(GetCachedJson(true, 120)); 

die folgenden Methoden verwenden:

public static string GetCachedJson(bool requireCache, int minuteInCache) 
    { 
     if (requireCache) 
     { 
      if (HttpRuntime.Cache[CacheKey()] == null) 
      { 
       string dataJSON = GetJSONPeopleDetails(); 
       HttpRuntime.Cache.Insert(CacheKey(), dataJSON, null, DateTime.Now.AddMinutes(minuteInCache), Cache.NoSlidingExpiration); 
      } 

      return HttpRuntime.Cache[CacheKey()].ToString(); 
     } 
     else 
     { 
      return GetJSONPeopleDetails(); 
     } 
    } 

    private static string CacheKey() 
    { 
     string CACHE_NAME = "JSON_Blah.RESPONSE" + HttpContext.Current.Request.QueryString["uid"]; 
     return CACHE_NAME; 
    }