Das Abrufen von URL-Inhalten mit HtmlAgilityPack erzeugt einen Fehler

asp.net c# html-agility-pack webforms

Frage

Ich benutze HtmlAgilityPack , um Text von der URL zu holen, der für die Mehrheit der Webseiten gut funktionierte und für einige fing es an, Fehler heute zurückzugeben.

Der Fehler folgt dem doc = webGet.Load(url); Fehlermeldung: The underlying connection was closed: An unexpected error occurred on a send.

Nicht sicher, warum ich diesen Fehler bekomme, wie es mit dieser Website URL zuvor Beispiel URL: Link arbeitete

Ich habe versucht https URL wie bbc.com und es funktioniert dafür. irgendein Zeiger, wenn ihr Problem mit Code ist

 HtmlDocument doc = new HtmlDocument();
            var url = txtGrabNewsURL.Text.Trim();

        var webGet = new HtmlWeb();
        doc = webGet.Load(url);
        var baseUrl = new Uri(url);
        //  doc.LoadHtml(response);

        String title = (from x in doc.DocumentNode.Descendants()
                        where x.Name.ToLower() == "title"
                        select x.InnerText).FirstOrDefault();

        String desc = (from x in doc.DocumentNode.Descendants()
                       where x.Name.ToLower() == "meta"
                       && x.Attributes["name"] != null
                       && x.Attributes["name"].Value.ToLower() == "description"
                       select x.Attributes["content"].Value).FirstOrDefault();

        String ogImage = (from x in doc.DocumentNode.Descendants()
                          where x.Name.ToLower() == "meta"
                          && x.Attributes["property"] != null
                          && x.Attributes["property"].Value.ToLower() == "og:image"
                          select x.Attributes["content"].Value).FirstOrDefault();


        List<String> imgs = (from x in doc.DocumentNode.Descendants()
                             where x.Name.ToLower() == "img"
                              && x.Attributes["src"] != null
                             select x.Attributes["src"].Value).ToList<String>();

        List<String> imgList = (from x in doc.DocumentNode.Descendants("img")
                                where x.Attributes["src"] != null
                                select x.Attributes["src"].Value.ToLower()).ToList<String>();

Vollständige Fehlerdetails

System.Net.WebException was caught
  HResult=-2146233079
  Message=The underlying connection was closed: An unexpected error occurred on a send.
  Source=System
  StackTrace:
       at System.Net.HttpWebRequest.GetResponse()
       at HtmlAgilityPack.HtmlWeb.Get(Uri uri, String method, String path, HtmlDocument doc, IWebProxy proxy, ICredentials creds) in D:\Source\htmlagilitypack.new\Trunk\HtmlAgilityPack\HtmlWeb.cs:line 1355
       at HtmlAgilityPack.HtmlWeb.LoadUrl(Uri uri, String method, WebProxy proxy, NetworkCredential creds) in D:\Source\htmlagilitypack.new\Trunk\HtmlAgilityPack\HtmlWeb.cs:line 1479
       at HtmlAgilityPack.HtmlWeb.Load(String url, String method) in D:\Source\htmlagilitypack.new\Trunk\HtmlAgilityPack\HtmlWeb.cs:line 1106
       at HtmlAgilityPack.HtmlWeb.Load(String url) in D:\Source\htmlagilitypack.new\Trunk\HtmlAgilityPack\HtmlWeb.cs:line 1061
       at _admin_News.btnGrabNews_Click(Object sender, EventArgs e) in c:\path\News.aspx.cs:line 361
  InnerException: System.IO.IOException
       HResult=-2146232800
       Message=Authentication failed because the remote party has closed the transport stream.
       Source=System
       StackTrace:
            at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
            at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
            at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
            at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
            at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
            at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
            at System.Net.TlsStream.CallProcessAuthentication(Object state)
            at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
            at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
            at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
            at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
            at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
            at System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)
            at System.Net.ConnectStream.WriteHeaders(Boolean async)
       InnerException: 

Akzeptierte Antwort

Wenn dies nur mit HTTP S- Ressourcen geschieht, richten Sie die Ausrichtung auf .Net 4 aus. Dann könnte es mit der standardmäßigen SSL / TLS-Unterstützung zusammenhängen. Versuche Folgendes:

using System.Net;

static void Main()
{
    //place this anywhere in your code prior to invoking the Web request
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 |  SecurityProtocolType.Ssl3; 
}

Beliebte Antwort

Ich bin den Code auf meinem lokalen Rechner laufen es funktioniert gut und hat die Ausgabe ohne Fehler. Ich dachte, dass die Zeit Website nicht funktioniert, Verbindungsproblem aufgetreten.

   HtmlDocument doc = new HtmlDocument();
        var url = "https://m.gulfnews.com/business/sectors/banking/rebuilding-lives-10-years-after-lehman-s-fall-1.2277318"

    var webGet = new HtmlWeb();
    doc = webGet.Load(url);

    String title = (from x in doc.DocumentNode.Descendants()
                    where x.Name.ToLower() == "title"
                    select x.InnerText).FirstOrDefault();

Ausgabe: Wiederaufbau von Leben, 10. . . . . Bald.




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum