HttpWebRequest.EndGetResponse () возвращает ноль на Windows Phone 7.1? - PullRequest
1 голос
/ 26 июня 2011

Я не совсем понимаю, почему EndGetResponse () возвращает ноль в следующем коде:

    private void Application_Launching(object sender, LaunchingEventArgs e)
    {
        var request = WebRequest.Create("http://www.microsoft.com");
        using (var response = request.EndGetResponse(request.BeginGetResponse(ar => { }, null)))
        using (var responseStream = response.GetResponseStream())
        using (var reader = new StreamReader(responseStream))
        {
            string content = reader.ReadToEnd();
        }
    }

(для воспроизведения замените пустой обработчик Application_Launching во вновь созданном приложении Windows Phone на приведенный выше код)

Это ошибка в фреймворке?

1 Ответ

2 голосов
/ 27 июня 2011

Видимо, я совершил типичную ошибку noob, я осмелился заблокировать основной поток / пользовательский интерфейс. Кажется, Silverlight хочет избежать этого любой ценой и отклоняет мой запрос, немедленно возвращая ноль. Хорошо, но было бы неплохо бросить соответствующее исключение вместо того, чтобы возвращать значение, которое документация даже не упоминает как возможность?

В любом случае, вот исправленный код:

    private void Application_Launching(object sender, LaunchingEventArgs e)
    {
        var request = WebRequest.Create("http://www.microsoft.com");
        var asyncResult = request.BeginGetResponse(
            ar =>
            {
                using (var response = request.EndGetResponse(ar))
                using (var responseStream = response.GetResponseStream())
                using (var reader = new StreamReader(responseStream))
                {
                    string content = reader.ReadToEnd();
                }
            }, null);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...