HttpWebRequest-Timeouts Nach Zehn Aufeinander Folgende Anfragen

Schreibe ich einen web-crawler für einen bestimmten Standort. Die Anwendung ist ein VB.Net Windows-Forms-Anwendung, die nicht Verwendung mehrerer threads - jeder web-Anforderung aufeinander. Doch nach zehn erfolgreichen Seitenaufrufen jeder nachfolgenden Anforderung Zeitüberschreitung.

Habe ich überprüft, das ähnliche Fragen hier schon geschrieben auf SO und umgesetzt haben, die empfohlenen Techniken in meine GetPage routine, wie unten gezeigt:

Public Function GetPage(ByVal url As String) As String
    Dim result As String = String.Empty

    Dim uri As New Uri(url)
    Dim sp As ServicePoint = ServicePointManager.FindServicePoint(uri)
    sp.ConnectionLimit = 100

    Dim request As HttpWebRequest = WebRequest.Create(uri)
    request.KeepAlive = False
    request.Timeout = 15000

    Try
        Using response As HttpWebResponse = DirectCast(request.GetResponse, HttpWebResponse)
            Using dataStream As Stream = response.GetResponseStream()
                Using reader As New StreamReader(dataStream)
                    If response.StatusCode <> HttpStatusCode.OK Then
                        Throw New Exception("Got response status code: " + response.StatusCode)
                    End If
                    result = reader.ReadToEnd()
                End Using
            End Using
            response.Close()
        End Using

    Catch ex As Exception
        Dim msg As String = "Error reading page """ & url & """. " & ex.Message
        Logger.LogMessage(msg, LogOutputLevel.Diagnostics)
    End Try

    Return result

End Function

Habe ich etwas verpasst? Bin ich nicht schließen oder die Entsorgung eines Objekts werden sollten? Es scheint seltsam, dass es immer passiert, nach zehn aufeinander folgenden Anfragen.

Hinweise:

  1. In den Konstruktor für die Klasse, in der diese Methode befindet, habe ich Folgendes:

    ServicePointManager.DefaultConnectionLimit = 100

  2. Wenn ich KeepAlive zu wahren, die timeouts beginnen nach fünf Anfragen.

  3. Alle Anforderungen für Seiten in der gleichen domain.

BEARBEITEN

Habe ich noch eine Verzögerung zwischen den einzelnen web-Anfrage, die zwischen zwei und sieben Sekunden, so dass ich nicht zu sein scheinen "hämmern" der Website oder der Versuch einer DOS-Attacke. Allerdings ist das problem immer noch Auftritt.

  • Was ist der Produkt-name und version des web-server-hosting der app?
  • Es gibt 10 verbindungen zu IIS 5
  • Ich bin neugierig - hast du jemals festzunageln die Ursache? Ich bin mit den gleichen Problemen.
  • Nein, niemals hat man die Krux an der Sache. Das ist, warum ich nahm die Denial-of-Service (DOS) - Schutz, da war es die einzige Verbleibende Antwort, die keinen Sinn gemacht.
  • Ich bin immer ein sehr ähnliches Problem schlagen die twitter-API mit HttpWebRequest. Noch seltsamer wird es nicht passieren wenn ich fiddler?
InformationsquelleAutor Bob Mc | 2009-07-28
Schreibe einen Kommentar