首页 > 解决方案 > 无法从传输连接读取数据:现有连接被强行关闭

问题描述

我正在连接 Skyview 网站 ( https://skyview.gsfc.nasa.gov/current/cgi/basicform.pl ) 以检索天文板块(即图像)。

我使用必要的参数构建 URL 并创建一个 HttpWebRequest:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

因为它是https,所以我之前插入了这些行,正如我在 SO 中的另一个线程中看到的那样:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

然后我以这种方式阅读网站答案:

            List<string> resp = new List<string>();

            const int BUFFER_SIZE = 1000;
            {
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    using (var responseStream = response.GetResponseStream())
                    {
                        int bytesRead;
                        do
                        {
                            var buffer = new byte[BUFFER_SIZE];
                            bytesRead = responseStream.Read(buffer, 0, BUFFER_SIZE);
                            resp.Add(Encoding.ASCII.GetString(buffer));
                        } while (bytesRead > 0);
                    }
                }
            }

网站回复后:

如果印版尺寸不大,一切正常:该站点只需几分钟(不到 5 分钟)即可生成印版文件,我可以正确获取它。

当我指定更大的字段时,Skyview 需要更多时间来获取图像并将文件 URL 发回给我,大约 300 秒后,我收到此错误:

无法从传输连接读取数据:现有连接被强行关闭

如果我通过浏览器进行操作,它可以工作。我用一个相当大的图像进行了测试,它花了 21 分钟没有出现任何错误。

我在这里经历了一些解决方案,但它们似乎不适用于我的情况。

标签: c#httpshttpwebrequest

解决方案


推荐阅读