none
VS2010: String in Datei auf Webserver schreiben RRS feed

  • Frage

  • Hallo Forum, 

    Ich habe einen Webmonitor für eine Turniersoftware programmiert, der einfach Daten aus meiner Anwendung in eine Datei auf dem Webserver schreibt und diese so ständig aktualisiert.

    Um das ganze zu starten, habe ich folgende Funktion:

    Public Function LoadUp(aktAutomat As String) As Boolean
            Dim method As String = "STOR"
            Dim client As WebClient = New WebClient With {
                .Credentials = New NetworkCredential(FTPUser, FTPKennwort)
            }
    
            Try
                Dim reply As String = client.UploadString(FTPServer & FTPVerz & "/nextgame.txt", method, aktAutomat)
                'Dim reply As String = client.UploadString("werse.bitpalast.net/httpdocs/nextgame.txt", method, aktAutomat)
            Catch ex As System.Net.WebException
                MsgBox("Es ist ein Fehler aufgetreten! Bitte die Turnierleitung informieren!", vbOKOnly, "Fehler bei der Web-Anzeige...")
                Return False
            End Try
            Return True
    
        End Function

    Das funktionierte bisher auch wunderbar. Jetzt haben wir mit unserer Webseite die Domain gewechselt und mit dem neuen Anbieter bekomme ich das nicht hin. Obwohl die Daten für ftp alle korrekt sind und ich mich dort auch anmelden kann.

    Hat jemand einen Tipp, woran das liegen kann? Das Programm rauscht immer in den Catch zweig rein. Der selbe code mit dem alten Anbieter funktioniert einwandfrei.

    LG Micha

    Mittwoch, 27. März 2019 17:21

Antworten

  • Hallo Micha,

    kannst Du die Datei (die ja anscheinend schon von 2018 ist?) über einen normalen FTP Client (bspw. FileZilla oder ähnliches) hochladen bzw. löschen?

    Ich würde jetzt einfach mal annehmen, dass die Datei durch irgendwas noch im Zugriff ist.

    Oder wird sie jedesmal neu mit 0 Bytes angelegt und kann dann nicht mehr geschrieben werden?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    • Als Antwort markiert MKnost Mittwoch, 27. März 2019 23:37
    Mittwoch, 27. März 2019 22:28
    Moderator
  • Hallo Stefan, ich habe jetzt den Grund herausgefunden.

    Mein Webspace ist im Ordner /httpdocs eingerichtet. Der FTP-Benutzer ist mit seinem Root-Verzeichnis auf dieses Verzeichnis konfiguriert, sodass ich anstatt /httpdocs nur das root angeben muß /

    Sorry, war ein Fehler meinerseits bei der FTP Konfiguration. Danke trotzdem für Deine Mühen.

    LG Micha

    Mittwoch, 27. März 2019 23:37

Alle Antworten

  • Hi,

    nuja, es wäre evtl. ne Idee, den Fehler mal nicht einfach wegzuwerfen, sondern sich den zumindest irgendwo zu merken. Dann hätte man mal einen Ansatz, wo man suchen kann.

    Ergo: Poste bitte den vollständigen Inhalt dessen, was ex.ToString() zurückgibt. Dann schauen wir weiter.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Mittwoch, 27. März 2019 17:50
    Moderator
  • Hallo Stefan, 

    ja sorry, hast natürlich recht... Das ist der Wert, den ex anzeigt:

    ?ex
    {"Der Remoteserver hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar (z.B. nicht gefunden oder kein Zugriff)."}
        Data: {System.Collections.ListDictionaryInternal}
        HResult: -2146233079
        HelpLink: Nothing
        InnerException: Nothing
        Message: "Der Remoteserver hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar (z.B. nicht gefunden oder kein Zugriff)."
        Response: {System.Net.FtpWebResponse}
        Source: "System"
        StackTrace: "   bei System.Net.WebClient.UploadDataInternal(Uri address, String method, Byte[] data, WebRequest& request)" & vbCrLf & "   bei System.Net.WebClient.UploadString(Uri address, String method, String data)" & vbCrLf & "   bei DGWPlaner.modStart.LoadUp(String aktAutomat) in D:\ENTWICKLUNG\DGWPlaner\modStart.vb:Zeile 78."
        Status: ProtocolError {7}
        TargetSite: {Byte[] UploadDataInternal(System.Uri, System.String, Byte[], System.Net.WebRequest ByRef)}
    


    Die Funktion LoadUp wird von folgendem Button-Click aufgerufen....

      Private Sub cmdMoniAn_Click(sender As Object, e As EventArgs) Handles cmdMoniAn.Click
    
            If txtFTPUser.Text <> "" And txtPasswort.Text <> "" And txtWebserver.Text <> "" Then
                FTPServer = "ftp://" & txtWebserver.Text
                FTPUser = txtFTPUser.Text
                FTPKennwort = txtPasswort.Text
                FTPVerz = txtFTPVerz.Text
                WebMon = True
                NextGameNr = ""
                If Not LoadUp(NextGameNr) Then
                    Exit Sub
                Else
                    MsgBox("Der Monitor wurde erfolgreich gestartet.", vbOKOnly + vbExclamation, "Hinweis...")
                    Main.WebMonitorKonfigurierenToolStripMenuItem.Text = "Webmonitor aktiv"
                    Main.WebMonitorKonfigurierenToolStripMenuItem.BackColor = Color.Lime
                End If
    
                Me.Close()
            Else
                MsgBox("Du musst die Zugangsdaten für den Server eingeben.", vbOKOnly + vbExclamation, "Fehler...")
                Exit Sub
            End If
    
        End Sub

    Auf dem Webserver sieht das ganze so aus: Ich habs auch schon mit den rechten 777 für die Datei versucht.

    LG Micha

    Mittwoch, 27. März 2019 19:56
  • Hallo Micha,

    kannst Du die Datei (die ja anscheinend schon von 2018 ist?) über einen normalen FTP Client (bspw. FileZilla oder ähnliches) hochladen bzw. löschen?

    Ich würde jetzt einfach mal annehmen, dass die Datei durch irgendwas noch im Zugriff ist.

    Oder wird sie jedesmal neu mit 0 Bytes angelegt und kann dann nicht mehr geschrieben werden?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    • Als Antwort markiert MKnost Mittwoch, 27. März 2019 23:37
    Mittwoch, 27. März 2019 22:28
    Moderator
  • Hallo Stefan, ich habe jetzt den Grund herausgefunden.

    Mein Webspace ist im Ordner /httpdocs eingerichtet. Der FTP-Benutzer ist mit seinem Root-Verzeichnis auf dieses Verzeichnis konfiguriert, sodass ich anstatt /httpdocs nur das root angeben muß /

    Sorry, war ein Fehler meinerseits bei der FTP Konfiguration. Danke trotzdem für Deine Mühen.

    LG Micha

    Mittwoch, 27. März 2019 23:37