无法从传输连接中读取数据:远程主机强行关闭了现有连接 [英] Unable to read data from the transport connection:An existing connection was forcibly closed by the remote host

查看:1299
本文介绍了无法从传输连接中读取数据:远程主机强行关闭了现有连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试从morizo​​n.pl下载源页面时遇到问题:

I have problem when I try download source page from morizon.pl:

  WebClient webClient = new WebClient();
  try
  {
      string str = webClient.DownloadString("https://www.morizon.pl/");
  }
  catch (Exception ex)
  {
      Console.WriteLine(ex);
  }

我检查了stackoverflow中的类似问题,并编辑了代码,但还是一无所获,我被这个问题困住了.

I checked similar problem in stackoverflow and edit my code and still nothing, I'm stuck with this problem.

public class CookieAwareWebClient : WebClient
{
    public CookieContainer CookieContainer { get; set; }

    public CookieAwareWebClient()
        : this(new CookieContainer())
    { }

    public CookieAwareWebClient(CookieContainer c)
    {
        this.CookieContainer = c;
    }

    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = base.GetWebRequest(address);
        var castRequest = request as HttpWebRequest;

        if (castRequest != null)
        {
            castRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
            castRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36";
            castRequest.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
            castRequest.Headers.Add("Accept-Language", "en-GB,en-US;q=0.8,en;q=0.6");
            castRequest.KeepAlive = false;
            castRequest.ProtocolVersion = HttpVersion.Version10;
            castRequest.ServicePoint.ConnectionLimit = 1;
            castRequest.CookieContainer = this.CookieContainer;
        }

        return request;
    }
}

例如google.com,我可以使用我的函数进行下载,但morizo​​n.pl我不能.

For example google.com I can download with my function but morizon.pl I cannot.

推荐答案

从.NET Framework 4.0开始,默认安全协议为TLS 1.0SSL 3.0.

As of .NET Framework 4.0 the default security protocol is TLS 1.0 and SSL 3.0.

在您的应用程序中,您可能需要启用TLS 1.1和/或TLS 1.2.

In your application you may need to enable either TLS 1.1 and/or TLS 1.2.

System.Net.ServicePointManager.SecurityProtocol |= 
    SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

using (WebClient webClient = new WebClient())
{
  string str = webClient.DownloadString("https://www.morizon.pl/");
}

stackoverflow帖子中的更多详细信息.

这篇关于无法从传输连接中读取数据:远程主机强行关闭了现有连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆