Подтвердить что ты не робот

Приложение iPhone попадает в состояние, когда сетевые запросы никогда не завершаются

Каждый так часто мое приложение для iPhone переходит в состояние, когда сетевые запросы всегда тайм-аут, даже если другие приложения работают нормально (и могут даже обращаться к тем же сайтам). Это явно не коррелирует с изменениями в доступности сети и происходит как на 3G, так и на Wi-Fi. Любые предложения о том, как диагностировать проблему?

(FWIW, приложение использует MonoTouch и HttpWebRequest, но я подозреваю, что что-то не так, это более низкий уровень.)

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

Обновления: Я пробовал использовать Reachability, но без эффекта. Reachability.InternetConnectionStatus всегда возвращает ReachableViaWiFiNetwork (или ReachableViaCarrierDataNetwork, в зависимости, также IsHostReachable() всегда возвращает true. Runtime.StartWWAN(), похоже, не имеет значения.

4b9b3361

Ответ 1

Об этом была обнаружена ошибка в https://bugzilla.novell.com/show_bug.cgi?id=555439, и было несколько попыток ее разрешения. Начиная с последнего комментария в ошибке, он считался фиксированным, но я думаю, если вы используете MonoTouch 4.0.3, тогда есть некоторые случаи, которые не работают.

В основном проблема отражена в этом другом вопросе Stackoverflow: Включение iPhone 3G

Что MonoTouch делает, чтобы попытаться обойти эту проблему, - это вызвать MonoTouch.Runtime.StartWWAN(Uri), который открывает фиктивное соединение с uri, используя NSUrlConnection, чтобы заставить работать сетевой интерфейс. Затем MonoTouch возвращается к использованию API сокетов BSD внутри HttpWebRequest.

Ответ 2

Попробуйте установить свойство timeOutInterval для NSURLRequest, используемого для выполнения вызова.