簡體   English   中英

WebRequest.GetResponse錯誤:基礎連接-C#Asp.Net

[英]WebRequest.GetResponse Error: Underlying Connection - C# Asp.Net

下面是此HttpWebRequest的代碼。 我想知道為什么可以在google.com或facebook.com上使用此代碼。

在下面的該特定站點上時,出現此錯誤The underlying connection was closed: An unexpected error occurred on a send.

為了使這項工作有效,我還需要在代碼中添加什么? 你們有個主意嗎? 我搜索到我需要證書或受信任的證書才能發出http請求,但是如何在我的代碼中實現呢?

protected void Button1_Click(object sender, EventArgs e)
{
    WebRequest MyWebRequest;
    WebResponse MyWebResponse;
    StreamReader sr;
    string strHTML;
    StreamWriter sw;

    MyWebRequest = HttpWebRequest.Create("https://qiita.com/naoki_mochizuki/items/3fda1ad6594c11d7b43c");
    MyWebResponse = MyWebRequest.GetResponse();
    sr = new StreamReader(MyWebResponse.GetResponseStream());
    strHTML = sr.ReadToEnd();

    string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);  

    sw = File.CreateText(@path +"\\"+TextBox1.Text+"");
    sw.WriteLine(strHTML);

    sw.Close();               

}

使用CreateHttp靜態幫助器方法代替Create。

這樣做的原因是,您擁有一個屬性ServerCertificateValidationCallback ,該屬性是一個委派,使您可以自定義對證書驗證的操作。

在以下情況下,我將其設置為靜態返回true以繼續或允許請求。

HttpWebRequest MyWebRequest;
WebResponse MyWebResponse;
StreamReader sr;
string strHTML;
StreamWriter sw;
MyWebRequest = (HttpWebRequest)HttpWebRequest.Create("https://qiita.com/naoki_mochizuki/items/3fda1ad6594c11d7b43c");
MyWebRequest.ServerCertificateValidationCallback = (snd, cert, chain, err) => true;

我添加了此代碼來解決此問題

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM