底层连接已关闭: - WebClient错误

时间:2014-04-16 10:21:04

标签: c# asp.net webclient

当我尝试使用WebClient点击单独的asp页面从邮政编码下载完整地址详细信息时,我一直收到错误。

The underlying connection was closed: An unexpected error occurred on a send.

只有在服务器上才会发生这种情况。不仅如此,当我将URL粘贴到浏览器中时,它完美地运行。这可能是防火墙设置吗?

以下是我正在使用的代码(取自here上的其他帖子)

using (CookieAwareWebClient WC = new CookieAwareWebClient())
{
    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3;

    string data = WC.DownloadString("https://www.myUrl.com/postcode.asp?postcode=" + postcode + "&houseNumber=" + Server.HtmlEncode(txtHouseNumber.Text));
}

最初我只是使用它,结果相同:

WebClient client = new WebClient();
string address = "https://www.myUrl.com/postcode.asp?postcode=" + postcode + "&houseNumber=" + Server.HtmlEncode(txtHouseNumber.Text);

string data = client.DownloadString(address);

该应用程序使用.NET 4 / C#构建,并使用iis6在Windows Server 2003上托管。

如果这是防火墙或安全设置,它会是什么?如果没有,对原因或解决方法的任何想法?非常感谢

更新 - ########################

好的,我也尝试过使用HttpWebRequest,我在第二行遇到错误:

HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(new Uri("https://www.myUrl.com/postcode.asp?postcode=AZ11ZA&houseNumber=1"));
HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse();

错误消息包含:

System.Threading.Thread.AbortInternal() at System.Threading.Thread.Abort(Object stateInfo) at System.Web.HttpResponse.End() at MyApp.MyPage.WebClientTest()

不知道这对任何人都有帮助......

2 个答案:

答案 0 :(得分:3)

取自Jamby在回答评论中的回答:

您是否尝试过在http而不是https中访问它?

简单。感谢

答案 1 :(得分:2)

只是以为我会添加这个,它对我有用。某些站点或防火墙按其版本阻止SSL或TLS连接。最近,这意味着任何低于1.2的版本。因此,在从网络下载文件之前,我进行了以下设置:

using (WebClient webClient = new WebClient())
                {
                    ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
                    ServicePointManager.DefaultConnectionLimit = 9999;

                    log.Info("Downloading file");
                    webClient.DownloadFile("https://somesitedomain/somefile.csv", outfile);
                }

使用的默认TLS版本可能取决于使用的.NET框架,并且.NET 4.0似乎缺少枚举(因此3072)。较新的版本应该可以执行

之类的操作
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12

有关更多信息,请参见here