我创建了json web service
&在我的网站上使用。
现在我想在我的Windows Phone应用程序中使用它来显示该Web服务正在接收的数据。所以我写下面的代码--->
//// some code
StartThread();
}
void StartThread()
{
DispatcherTimer TradeThread = new DispatcherTimer();
TradeThread.Interval = TimeSpan.FromMilliseconds(1000);
TradeThread.Tick += new EventHandler(BindData);
TradeThread.Start();
}
void BindData(object sender, EventArgs e)
{
WebClient wc = new WebClient();
wc.DownloadStringAsync(new Uri("some URL"));
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
}
void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
JObject jsonObject = JObject.Parse(e.Result);
///// some code
代码工作正常,但是在一些请求之后数据没有更新。所以我认为存在一些缓存问题&我不知道如何禁用缓存或任何替代方法来获取每个requets上的更新数据 bcoz我从来没有使用过Web客户端。
因此,如果有人使用网络服务而不是plz检查上面的代码&如果对此缓存问题有任何解决方案,请对其进行评论或编辑........... thanx
答案 0 :(得分:4)
一个简单的解决方法是在查询字符串末尾添加一个在earch请求上更改的值:
"?disablecache=" + Environment.TickCount
答案 1 :(得分:1)
向请求添加无缓存标头:
wc.Headers.Add("Cache-Control: no-cache");
答案 2 :(得分:1)
尝试以这种方式设置“Cache-Control”标头:
wc.Headers["Cache-Control"] = "no-cache";
答案 3 :(得分:0)
我也尝试过奥利弗的伎俩而且有效!
我在使用我的方法中的额外参数时遇到了一些麻烦,该参数适用于带或不带参数的请求。
所以我尝试了这个并且它有效:
WebClient wc = new WebClient();
wc.Headers["If-Modified-Since"] = DateTimeOffset.Now.ToString();