WebClient-WebRequest Timeout

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Quellcoder02.

    WebClient-WebRequest Timeout

    Hallo liebe Community,

    ich habe ein Problem. Ich habe einen Webserver von World4You gemietet und habe darauf eine php und ein textdokument liegen. Rufe ich die php manuell auf, passt alles. Nun möchte ich allerdings die php per Konsolenanwendung aufrufen bzw. das Textdokument via DownloadString auslesen. Das funktioniert auch noch super. Der Wert ändert sich aber des öfteren, er kann das dann circa 2 mal auslesen, beim 3ten mal kommt es zu einem Timeout, der fehler wird vie catch ausgegeben und danach schreibt er mir trotzdem den richtigen wert in die Konsole. Starte ich die Konsole neu, funktioniert es wieder so wie vorher beschrieben. Das ganze ist sehr komisch, denn nach dem starten funktioniert es wieder. Weiß vllt. jemand wie man das beheben kann? Ich hab unten noch die betroffenen Code-Elemente eingefügt.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Try
    2. Console.WriteLine("Writing 0")
    3. Dim request As Net.HttpWebRequest = CType(Net.WebRequest.Create("http://.../shout/passing.php?text=" & "0"), Net.HttpWebRequest)
    4. Dim response = request.GetResponse()
    5. Catch e As Exception
    6. My.Computer.Audio.PlaySystemSound(SystemSounds.Beep)
    7. Console.WriteLine(e) 'es tritt dieser Fall ein, es steht meist trotzdem das richtige drinnen.
    8. End Try


    VB.NET-Quellcode

    1. Try
    2. str = client.DownloadString("http://.../shout/passing.txt")
    3. Catch e As Exception
    4. Console.WriteLine(e) 'Es tritt dieser Fall ein -
    5. End Try
    6. Console.WriteLine(str) '- hier gibt er dann trotzdem das richtige aus



    Danke im Vorhinein!
    LG
    Quellcoder
    Projekte
    ​Der Wert ändert sich aber des öfteren, er kann das dann circa 2 mal auslesen, beim 3ten mal kommt es zu einem Timeout


    Offenbar schlägt es beim 3. Mal fehl. Also machst du schon mehrere Anfragen und offenbar machst du es iwie nicht richtig, denn sonst hättest du kein Timeout.
    Das es nach dem 2. Versuch fehlschlägt lässt mich vermuten das es am Connection Limit der Webclients liegen wird. Offenbar disposed to nicht oder iwas.
    Verwende mal Using. Dein Code mit den öfters laden ist ja nicht ersichtlich^^
    Das ist meine Signatur und sie wird wunderbar sein!
    @Mono habe es jetzt mit Using und client.Dispose() versucht, gleiches Ergebnis. (Der wert war einmal 13, danach 3 mal 0, danach einmal 14, dann kam ein Timeout)
    Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. str = ""
    2. Using client As New Net.WebClient
    3. Try
    4. str = client.DownloadString("http://.../shout/passing.txt")
    5. client.Dispose()
    6. Catch e As Exception
    7. Console.WriteLine(e)
    8. End Try
    9. End Using
    10. Console.WriteLine(str)



    LG
    Quellcoder
    Projekte

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Quellcoder02“ ()

    Ich habe mal ein ganz kleines Beispielconsolenprojekt erstellt:

    C#-Quellcode

    1. static void Main(string[] args)
    2. {
    3. do
    4. {
    5. using (System.Net.WebClient c = new System.Net.WebClient())
    6. {
    7. Console.WriteLine(c.DownloadString(@"http://www.somesite"));
    8. }
    9. } while (Console.ReadLine() != "exit");
    10. }


    funktioniert endlos bei mir^^

    Bei using brauchst du kein dispose. Das ist der Sinn hinter Using^^
    Das ist meine Signatur und sie wird wunderbar sein!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mono“ ()

    @Mono Okay ich habe es jetzt auch nochmal mit einer extrigen Anwendung versucht, da ging es dann egal wieviele Werte. Aber was ist nun an meinem Code falsch? Wüsstest du ev. etwas? Kann es vielleicht sein, das das Projekt zu groß ist, oder der Code zu viele Umwege nimmt?

    LG
    Quellcoder
    Projekte
    @Mono ich habe auch herausgefunden, dass alles erst dann Timeouted, wenn Writing0 2-3 mal ufgerufen wird. Nach dem 3tten mal Timeouted das Lesen, als auch das Beschreibein der Datei. Weißt du oder jemand anders, warum und was man dagegen machen kann?
    Problemcode:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Sub Write0()
    2. Try
    3. Console.WriteLine("Writing 0")
    4. If person.Equals("...") Then
    5. Dim request As Net.HttpWebRequest = CType(Net.WebRequest.Create(Phpurl.. & "0"), Net.HttpWebRequest)
    6. Dim response = request.GetResponse()
    7. ElseIf person.Equals("...") Then
    8. Dim request As Net.HttpWebRequest = CType(Net.WebRequest.Create(Phpurl. & "0"), Net.HttpWebRequest)
    9. Dim response = request.GetResponse()
    10. End If
    11. Catch e As Exception
    12. My.Computer.Audio.PlaySystemSound(SystemSounds.Exclamation)
    13. Console.WriteLine(e)
    14. End Try
    15. End Sub



    LG
    Quellcoder02
    Projekte
    Ich glaube ich habe den Fehler behoben. Anscheinend wird es immer eine andere Connection wenn sich der Wert in der txt-Datei ändert.... Demnach muss man einfach nur Net.ServicePointManager.DefaultConnectionLimit = 10000 machen. Was sich dieses Connection Limit bringen soll, keine Ahnung.
    Projekte