通常情况下,此代码完全正常,但我在客户PC上有一个实例,它会抛出此异常。我们根本无法复制。与主题一样,我得到的异常是“基础连接已关闭:接收时发生意外错误”。我已经研究过这个,但我所能找到的只是将KeepAlive设置为false,这是我已经完成的。这通常是一个SSL连接,但我让客户尝试通过标准http进行相同的连接,我们得到了相同的结果。
这通常是一个超级快速的Web请求,其中userinfo类有大约10个字符串元素,并且在一个小的MySQL查询之后,响应在大约100个字符的字符串中。所以我认为这不是暂停的事情。
有什么想法吗?
public static string HitServer(string url)
{
if (UserInfo.Instance == null) return "";
//Request update XML path
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.KeepAlive = false;
req.Method = "POST";
req.ContentType = "xml/text";
using (Stream reqStream = req.GetRequestStream())
{
XmlSerializer s = new XmlSerializer(typeof(UserInfo));
s.Serialize(reqStream, UserInfo.Instance);
}
WebResponse response = req.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader sr = new StreamReader(responseStream);
return sr.ReadToEnd();
}
答案 0 :(得分:1)
在尝试了HTTP协议更改,Expect100contine,keepalive和其他一些请求参数等所有类型的修复后,我不得不切换到非SSL并只通过此连接加密密码。
不是最理想的修复,但必须完成。似乎某些PC上的某些东西会阻止我们应用程序的SSL连接。这是通过使用我们的软件内置的浏览器视图来测试,以尝试在安全的服务器上加载图像 - 这失败了。
答案 1 :(得分:0)
当我得到“底层连接已关闭:接收时发生意外错误。”时,通常是由序列化和/或反序列化错误引起的。我猜想如果在服务器上没有记录错误,则在客户端反序列化响应时会出现问题。
如何注册模块以捕获客户端上的所有错误,并检查是否有任何错误?