Как настроить доступ к сети для эмулятора Windows Phone?

Я пытаюсь отладить приложение, которое делает WebRequest синхронно, т.е.:

HttpWebRequest req = WebRequest.Create(new Uri("http://www.stackoverflow.com/")) as HttpWebRequest;

IAsyncResult res = req.BeginGetResponse(callback => { }, req);
while (!res.IsCompleted)
{
    System.Threading.Thread.Sleep(100);
}
// Doesn't matter what's here, as `res.IsCompleted` never returns true

Это просто для проверки того, что часть логики приложения «правильная», но она застревает, когда IAsyncResult никогда не сообщает о завершении.

Для проверки я попытался использовать Internet Explorer на эмуляторе, но обнаружил, что не может найти какие-либо веб-страницы (включая встроенные избранные), что наводит меня на мысль, что эмулятор пытается использовать определенный сетевой интерфейс на моем ноутбуке, но, похоже, нет способа его настроить или какой интерфейс использовать? У меня есть подозрение, что он может пытаться использовать интерфейс VPN или виртуальный адаптер, такой как для VirtualBox. Итак, как я могу настроить его? Кроме того, вы ожидаете, что запросы, сделанные эмулятором, будут отображаться в Fiddler?

Для записи NetworkInterface.GetIsNetworkAvailable() возвращает true;

ОБНОВЛЕНИЕ:

Похоже, что обновление моего графического драйвера (и связанная с этим перезагрузка) позволило эмулятору получить доступ к реальной сети (или, по крайней мере, угадать правильный адаптер); однако res.IsCompleted по-прежнему не сообщает true (и Fiddler показывает, что запрос выполнен), поэтому я немного сбит с толку.


person Rowland Shaw    schedule 09.04.2012    source источник


Ответы (1)


Ты используешь прокси? Эмулятор Windows Phone привязан к текущему активному интернет-соединению, а также к настройкам прокси. Убедитесь, что они настроены правильно. Кроме того, доступ в Интернет для XDE может блокироваться брандмауэром — проверьте также настройки.

Я бы рекомендовал приобрести Fiddler. Попытка настроить это, чтобы захватить трафик эмулятора и посмотреть, какую информацию вы можете оттуда получить.

person Den Delimarsky    schedule 09.04.2012
comment
Итак, Скрипач получает что-нибудь? - person Den Delimarsky; 10.04.2012
comment
После обновления моих видеодрайверов, да. Все еще не уверен, почему res.IsCompleted никогда не возвращает значение true на Windows Phone. - person Rowland Shaw; 10.04.2012
comment
Ваша модель потоков отключена. Если вы ждете завершения запроса, можете также использовать обратный вызов, который вы оставили пустым, - он будет запущен, когда запрос будет выполнен. - person Den Delimarsky; 11.04.2012
comment
Это то, что я в итоге сделал - немного странно, что res.IsCompleted действительно возвращает true для других платформ. - person Rowland Shaw; 11.04.2012