C#Web请求异常:基础连接已关闭:接收时发生意外错误

时间:2011-08-03 06:46:55

标签: c# httpwebrequest webrequest

通常情况下,此代码完全正常,但我在客户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();
        }

2 个答案:

答案 0 :(得分:1)

在尝试了HTTP协议更改,Expect100contine,keepalive和其他一些请求参数等所有类型的修复后,我不得不切换到非SSL并只通过此连接加密密码。

不是最理想的修复,但必须完成。似乎某些PC上的某些东西会阻止我们应用程序的SSL连接。这是通过使用我们的软件内置的浏览器视图来测试,以尝试在安全的服务器上加载图像 - 这失败了。

答案 1 :(得分:0)

当我得到“底层连接已关闭:接收时发生意外错误。”时,通常是由序列化和/或反序列化错误引起的。我猜想如果在服务器上没有记录错误,则在客户端反序列化响应时会出现问题。

如何注册模块以捕获客户端上的所有错误,并检查是否有任何错误?