Problem beim umbenennen der Datei auf dem FTP-server in .NET Framework 4.0!

Ich habe ein problem Umbenennung eine FTP-Datei mit den folgenden code:

    Dim Request As FtpWebRequest = DirectCast(WebRequest.Create(New Uri("ftp://sftp.mycompany.com/myfile.txt")), FtpWebRequest)
    'Set that we will be renaming a file
    Request.Method = WebRequestMethods.Ftp.Rename
    'Provide the new filename
    Request.RenameTo = NewFileName
    'The credentials needed to log onto the server
    Request.Credentials = New NetworkCredential("username", "password")
    'We are going to enable SSL for the communication with the FTP server as required by the remote server.
    Request.EnableSsl = True
    Request.UsePassive = True
    Request.KeepAlive = False
    'Create a Response object getting the downloaded file
    Dim Response As FtpWebResponse = DirectCast(Request.GetResponse(), FtpWebResponse)
    Response.Close()

Ich eigentlich nie hatte es funktioniert oder benötigt umbenennen einer FTP-Datei bis .NET 4.0 also das war der 1. code, den ich schrieb. Eine enge derivitave dieser code zum herunterladen der Datei FUNKTIONIERT, so ist es nicht, eine SSL-oder FTP-Problem (Lesen Sie für die Ablaufverfolgung detail) Offenbar, obwohl dieser code wurde dokumentiert, um die Arbeit in der Framework 3.5 oder vor. In VS.NET 2010 .NET Framework 4.0 Projekt, das ich immer wieder: "Der Remoteserver hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar (z.B. Datei nicht gefunden, kein Zugriff)."

Erraten, was... kopiert den genauen code in ein altes VS.NET 2008 test-Projekt lief es wieder -> funktioniert perfekt!

So, ich dachte, ich würde einfach wickeln Sie diesen code in eine binäre Ausrichtung auf das 3.5 Framework und verweisen dann in meine VS.NET 2010-Projekt zu überlisten bug, aber es hat nicht funktioniert.

Ich habe versucht, das hinzufügen einen workaround habe ich gefunden, die besagt hinzufügen das Präfix "%2E/" im Dateinamen hat nicht funktioniert für mich. Meine trace-Protokoll gehalten, die Ausgabe, die die gleichen Ergebnisse:

System.Net Information: 0 : [2228] FtpControlStream#15409429 - Resonanz [257 "/Benutzer/Firma" is current directory]

System.Net Information: 0 : [2228] FtpControlStream#15409429 - Senden-Befehl [RNFR /myfile.txt]

System.Net Information: 0 : [2228] FtpControlStream#15409429 - Resonanz [550-Datei /myfile.txt nicht gefunden]

VS.NET 2008 hat unterschiedliche Ergebnisse ommiting den 1. slash vor dem umbenennen der Datei:

System.Net Information: 0 : [6460] FtpControlStream#40715158 - Resonanz [257 "/Benutzer/Firma" is current directory]

System.Net Information: 0 : [6460] FtpControlStream#40715158 - Senden-Befehl [CWD /Benutzer/Unternehmen/]

System.Net Information: 0 : [6460] FtpControlStream#40715158 - Resonanz [250 Befehl CWD erfolgreich]

System.Net Information: 0 : [6460] FtpControlStream#40715158 - Senden-Befehl [RNFR myfile.txt]

System.Net Information: 0 : [6460] FtpControlStream#40715158 - Resonanz [350 neuen Namen Eingeben]

System.Net Information: 0 : [6460] FtpControlStream#40715158 - Senden-Befehl [RNTO myfileOLD.txt]

System.Net Information: 0 : [6460] FtpControlStream#40715158 - Resonanz [250 Umbenannt]

Ich habe versucht, jede Kombination und kann nicht damit es funktioniert, außer beim laufen VS.NET 2008 oder vor. Das klingt wie ein Fehler oder eine undokumentierte Verfahren ändern, die wahrscheinlich garantiert einen Eintrag auf connect.microsoft.com.

Jede Hilfe oder Anregungen zu diesem?

Dank!

InformationsquelleAutor atconway | 2010-11-11
Schreibe einen Kommentar