我的问题是:
我的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)只被调用一次(第一次)。
如何多次拨打我的服务?
答案 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)
我相信网络请求通常由模拟器缓存(也许是真正的手机)。
以下是一些提及此内容的博客文章,以及一些解决方案: