WP7.1应用程序中的WebClient只调用一次

时间:2012-03-12 14:24:25

标签: c# windows-phone-7 azure

我的问题是:

我的WebClient使用云中的一个功能(http://127.0.0.1:81/Service1.svc/Data)。

但是不可能多次打电话(例如进行更新)。

这是我的代码:

private void button_Click(object sender, RoutedEventArgs e)
{
WebClient cnt = new WebClient();
cnt.DownloadStringCompleted += new DownloadStringCompletedEventHandler(cnt_DownloadStringCompleted);
cnt.DownloadStringAsync(new Uri("http://127.0.0.1:81/Service1.svc/Data"));
}

void cnt_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
int num = JsonHelper.FromJson<int>(e.Result);
textbox.Dispatcher.BeginInvoke(() => textbox.Text = Convert.ToString(num));
}

每次单击后,应用程序在cnt_DownloadStringCompleted中运行良好,但结果(e.Result)在服务器更新后永远不会更改。

在Azure服务中,我通过休息时注意到函数(Data)只被调用一次(第一次)。

如何多次拨打我的服务?

2 个答案:

答案 0 :(得分:3)

检查服务器端以确保您不允许缓存。如果您的服务中有响应上下文,请设置:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

或者,如果您无法执行此操作,请在查询字符串中发送更改的无意义参数,例如:

http://127.0.0.1:81/Service1.svc/Data?nonsense=190AF142-4341-47DC-9CF5-3BC3ACBD02EE

您可以每次生成并发送新的guid,甚至可以使用DateTime.Now.Ticks.ToString()。话虽这么说,如果你可以控制服务器端,消除缓存,因为这种方式是严重的黑客攻击。

答案 1 :(得分:1)

我相信网络请求通常由模拟器缓存(也许是真正的手机)。

以下是一些提及此内容的博客文章,以及一些解决方案: