在wp7应用程序中的Web客户端请求缓存问题

时间:2013-02-25 11:09:20

标签: c# web-services windows-phone-7

我创建了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

4 个答案:

答案 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();