我们的 c#.net 软件连接到一个在线应用程序来处理帐户和商店。它使用HttpWebRequest
and来做到这一点HttpWebResponse
。
这种交互的一个例子,以及标题中的异常来自的一个领域是:
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()));
}
在线应用程序将响应“真”或“假”。在我们所有的测试中,它都获得了这些值之一,但是对于几个客户(数百个),我们得到了这个异常,System.FormatException: String was not recognized as a valid Boolean
这听起来像是响应被某些东西弄乱了。如果我们要求他们在 Web 浏览器中访问在线应用程序,他们会看到正确的响应。客户端通常位于学校网络上,这可能会受到相当大的限制,并且通常在代理服务器下,但是一旦他们将代理详细信息放入或添加了防火墙例外,大多数都可以很好地应对。是否有什么东西可能会扰乱服务器的响应,或者我们的代码有问题?