先日、奇妙なバグレポートを受け取り、誰かが犯人を突き止めるのを手伝ってくれることを望んでいました。FacebookAPIを使用してデスクトップクライアントプログラムから呼び出しを行うプラグインがあります。ユーザーは、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をキャッチする必要があります。しかし、それでも問題は解決しません。私はこの問題をグーグルで検索することに時間を費やしましたが、ペアレンタルコントロールに関しては何も思いつきませんでした。
助言がありますか?ありがとう!