WebClient в приложении WP7.1 вызывается только один раз - PullRequest
3 голосов
/ 12 марта 2012

Моя проблема:

Мой 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 в перерыве я заметил, что функция (Данные) вызывается только один раз (в первый раз).

Как я могу позвонить в мою службу более одного раза?

Ответы [ 2 ]

3 голосов
/ 12 марта 2012

Проверьте серверную часть, чтобы убедиться, что вы не разрешаете кэширование.Если у вас есть контекст ответа в вашей службе, установите:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

В качестве альтернативы, если у вас нет возможности сделать это, отправьте изменяющий бессмысленный параметр в строке запроса, что-то вроде:

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

Вы можете каждый раз генерировать и отправлять новое руководство или даже использовать DateTime.Now.Ticks.ToString().Тем не менее, если у вас есть контроль над серверной стороной, исключите кеширование, так как этот способ - серьезный взлом.

1 голос
/ 12 марта 2012

Я полагаю, что веб-запросы часто кэшируются эмулятором (возможно, и реальным телефоном).

Вот несколько сообщений в блоге, в которых упоминается это, а также некоторые решения:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...