Vista Родительский контроль вызывает исключение Socket? - PullRequest
1 голос
/ 07 января 2009

На днях я получил странное сообщение об ошибке и надеялся, что кто-нибудь сможет помочь мне разобраться с преступником. У меня есть плагин, который использует API Facebook для звонков из клиентской программы для настольного компьютера. Пользователь сообщает, что при включении родительского контроля Vista он получает исключение во время выполнения.

Подробный отчет об ошибках доступен здесь , и я убедился, что родительский контроль Vista действительно является проблемой. Даже если ни один сайт не заблокирован, и даже если http://api.facebook.com специально разрешено, я все равно получаю исключение.

Оскорбительный метод ниже. В частности, строка string result = reader.ReadToEnd(); - это то место, куда выдается исключение.

    private static XmlDocument ExecuteQuery(SortedDictionary<string, string> parameters,
        string secretKey)
    {
        string query = GetQueryFromParameters(parameters, secretKey);
        HttpWebResponse response = null;

        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(FACEBOOK_REST_URL);
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";

            // Write the POST parameters to Facebook.
            StreamWriter writer = new StreamWriter(request.GetRequestStream());
            writer.Write(query);
            writer.Close();

            // Get a response.
            response = request.GetResponse() as HttpWebResponse;
        }
        catch (WebException we)
        {
            // Getting the response must have thrown an HTTP error. We can still try to get the 
            // response from the caught exception though.
            response = we.Response as HttpWebResponse;
        }

        if (response != null)
        {
            // Read the response.
            StreamReader reader = new StreamReader(response.GetResponseStream());
            string result = reader.ReadToEnd();
            reader.Close();
            response.Close();

            XmlDocument responseXml = new XmlDocument();
            responseXml.LoadXml(result);
            return responseXml;
        }
        else
        {
            throw new FacebookException(Resources.FacebookResponseError);
        }
    }

Очевидно, я должен ловить IOException, а не позволять ему становиться исключением во время выполнения. Но даже в этом случае проблема все еще остается. Я потратил некоторое время на поиск в Google, но ничего не придумал в отношении родительского контроля.

Есть предложения? Спасибо!

1 Ответ

1 голос
/ 10 февраля 2009

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

...