当社の c#.net ソフトウェアはオンライン アプリに接続して、アカウントとショップを処理します。と を使用してこれをHttpWebRequest行いHttpWebResponseます。
この相互作用の例と、タイトルの例外が由来する 1 つの領域は次のとおりです。
var request = HttpWebRequest.Create(onlineApp + string.Format("isvalid.ashx?username={0}&password={1}", HttpUtility.UrlEncode(username), HttpUtility.UrlEncode(password))) as HttpWebRequest;
request.Method = "GET";
using (var response = request.GetResponse() as HttpWebResponse)
using (var ms = new MemoryStream())
{
var responseStream = response.GetResponseStream();
byte[] buffer = new byte[4096];
int read;
do
{
read = responseStream.Read(buffer, 0, buffer.Length);
ms.Write(buffer, 0, read);
} while (read > 0);
ms.Position = 0;
return Convert.ToBoolean(Encoding.ASCII.GetString(ms.ToArray()));
}
オンライン アプリは、'true' または 'false' のいずれかで応答します。すべてのテストで、これらの値の 1 つを取得しますが、数百人のうちの 2 人の顧客についてはSystem.FormatException: String was not recognized as a valid Boolean、応答が何かによって文字化けしているように聞こえるこの例外が発生します。Web ブラウザーでオンライン アプリにアクセスするように依頼すると、正しい応答が表示されます。クライアントは通常、かなり制限された学校のネットワーク上にあり、多くの場合プロキシ サーバーの下にありますが、プロキシの詳細を設定するか、ファイアウォールの例外を追加すると、ほとんどのクライアントは正常に処理されます。サーバーからの応答を台無しにしている可能性があるものはありますか、それともコードに何か問題がありますか?