[VB.NET] Abbruch von UploadValuesAsync schickt unfertige Datei an Server

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

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von tobiasmrmo.

    [VB.NET] Abbruch von UploadValuesAsync schickt unfertige Datei an Server

    Hallo,

    ich lade verschiedene Infos inkl. einer PDF-Datei an eine URL.

    Alles funktioniert soweit korrekt bis auf den Abbruch der Aktion.
    Problem: Sobald CancelAsync() ausgeführt wird, wird der Upload zwar beendet, d.h. die Complete-Funktion wird sofort aufgerufen, aber die Daten werden dennoch an den Server gesendet, inkl. der unfertigen PDF.

    Auch während des kompletten Uploads wird auf dem Server noch nichts empfangen. Erst wenn die Datei vollständig ist kommen die Daten komplett an, oder aber leider auch wenn der Abbruch eingeleitet wurde.

    Ich erwarte dass beim Abbruch NICHTS am Server ankommt.
    Ich wäre für jeden sinnvollen Lösungsansatz dankbar.


    Public client As WebClient = New WebClient()
    ---

    AddHandler client.UploadValuesCompleted, AddressOf UploadValuesCompleted

    arrPost = New Specialized.NameValueCollection
    arrPost.Add("token", token)
    arrPost.Add("filename", fileInfo.Name)
    arrPost.Add("contentEncoding", "base64")
    arrPost.Add("content", System.Convert.ToBase64String(My.Computer.FileSystem.ReadAllBytes(fileName)))

    client.UploadValuesAsync(New System.Uri(urlToUpload), arrPost)

    ---

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles cmdCancel.Click
    If client.IsBusy = True Then
    client.CancelAsync()
    End If
    End Sub
    --

    Private Sub UploadValuesCompleted(ByVal sender As Object, ByVal e As Net.UploadValuesCompletedEventArgs)
    Try
    If e.Cancelled = True Then
    client.Dispose()
    Else
    ' Response verarbeiten
    End If
    Catch ex As Exception
    ' MessageBox
    End Try

    End Sub

    tobiasmrmo schrieb:

    Auch während des kompletten Uploads wird auf dem Server noch nichts empfangen.
    Da wär ich mir nicht sicher.
    Das kann ja auch iwie zunächstmal gecachet zwischengelagert sein.

    Aber weiß ich nicht - vlt. findeste ja noch eine Lösung.
    Ansonsten müsste man im Abbruch-Fall eben eine Nachricht hinterher-schicken, dass der missglückte Datensatz zu löschen ist.
    Oder du codest auf dem Server eine Logik, die auf missglückte Übertragungen von sich aus reagiert.

    ErfinderDesRades schrieb:

    Da wär ich mir nicht sicher.
    Das kann ja auch iwie zunächstmal gecachet zwischengelagert sein.


    Ja, da geb ich dir recht. Es liegt vermutlich im temp-Ordner auf dem Server. Aber an die eigentlich URL wird während des Uploads noch nichts gesendet.

    Und wenn ich den Request abbreche erwartet ich eigentlich dass die Daten im temp-Ordner einfach gelöscht werden.