c# - 系统.Net.WebException : The underlying connection was closed: An unexpected error occurred on a receive

标签 c# webrequest

我正在尝试在 C# 中创建一个方法,以从 url 返回网页 html 内容的字符串。我尝试了几种不同的方法,但收到错误System.Net.WebException:底层连接已关闭:接收时发生意外错误。

以下内容在本地运行正常,但在远程服务器上运行时出现上述错误:

  public static string WebPageRead(string url)
    {
        string result = String.Empty;

        WebResponse response = null;
        StreamReader reader = null;

        try
        {
            if (!String.IsNullOrEmpty(url))
            {
                HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
                request.Method = "GET";
                request.KeepAlive = false;
                request.ProtocolVersion = HttpVersion.Version10;

                response = request.GetResponse();
                reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                result = reader.ReadToEnd();
            }
        }
        catch (Exception exc)
        {
            throw exc;
        }
        finally
        {
            if (reader != null)
            {
                reader.Close();
            }

            if (response != null)
            {
                response.Close();
            }
        }

        return result;
    }

最佳答案

这可能不是问题所在,但请尝试以下操作:

public static string WebPageRead(string url)
{
    if (String.IsNullOrEmpty(url))
    {
        return null;
    }

    HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
    if (request == null)
    {
        return null;
    }

    request.Method = "GET";
    request.KeepAlive = false;
    request.ProtocolVersion = HttpVersion.Version10;

    using (WebResponse response = request.GetResponse())
    {
        using (Stream stream = response.GetResponseStream())
        {
            using (StreamReader reader = 
                       new StreamReader(stream, Encoding.UTF8))
            {
                return reader.ReadToEnd();
            }
        }
    }
}

我同意之前的答案,建议您使用已知的良好 URL 尝试此操作。我要补充的是,您应该使用已知良好的 HTTP 1.1 URL 来尝试此操作,注释掉将版本设置为 1.0 的行。如果这有效,那么它就会大大缩小范围。

关于c# - 系统.Net.WebException : The underlying connection was closed: An unexpected error occurred on a receive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/751056/

相关文章:

c# - 将 Python 代码注入(inject)进程

c# - 在应用程序启动时绘制十字 C#

c# - 从摘要访问身份验证中导入登录名和密码

c# - 委托(delegate)变量未被垃圾收集

vb.net - ASP.NET "The request was aborted: Could not create SSL/TLS secure channel"也与配置的 servicepointmanager 一起出现

java - HttpURLConnection POST 请求不返回任何值

c# - 通过默认成员身份提供程序进行 Web 服务身份验证

http - 有哪些好的免费 Http 调试工具

android - 在 unity Android 中读取 xml 响应

.net - 使用 .NET WebRequest 将文件上传到共享点时出现 409/冲突 HTTP 错误的原因?