WinINet FtpPutFile gibt Erfolg zurück, wenn der Status 451 zurückgegeben wird
Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem die Funktion Windows Internet (WinINet) FtpPutFile weiterhin TRUE zurückgibt, auch wenn der Vorgang mit dem Status 451 fehlschlägt.
Ursprüngliche Produktversion: Internet Explorer 10, 9
Ursprüngliche KB-Nummer: 2790777
Problembeschreibung
Die FtpPutFileWininet.dll-API gibt TRUE auch dann zurück, wenn der Vorgang mit dem folgenden Status fehlschlägt:
451 – Angeforderte Aktion abgebrochen: lokaler Fehler bei der Verarbeitung.
Die Abfolge der Ereignisse, die zu diesem Ergebnis führen, ist ähnlich wie folgt:
FTP:Response to Port 28376, '230 Login successful.'
FTP:Response to Port 28376, '200 Switching to ASCII mode.'
FTP:Request from Port 28376, 'PASV'
FTP:Response to Port 28376, '227 Entering Passive Mode (192,168,0,99,213,154)."
FTP:Request from Port 28376,'STOR myTesting.txt'
FTP:Response to Port 28376, '150 Ok to send data.'
(Jetzt werden Daten an 192.168.0.99 mit Port 256 x 213+154 = 54682) gesendet.
FTP:Response to Port 28376, '451 Failure writing to local file.'
Ursache
Die FtpPutFile WinINet-Funktion (einschließlich und FtpPutFileA ) meldet den FtpPutFileW Statuscode als TRUE, obwohl die interne WinINet-Implementierung der FtpPutFile Funktion bereits die Fehlerantwort 451 Beim Schreiben in eine lokale Datei vom Server erfasst hat.
Problemumgehung
Um dieses Problem zu umgehen, überprüfen Sie den Rückgabestatuscode, FtpPutFile anstatt sich auf die API zu verlassen, die False zurückgibt. Um dies zu erreichen, können Sie die InternetGetLastResponseInfo() Funktion verwenden, um die Serverantwort zu überprüfen.
Hinweis
Das FTP-Protokoll kann zusätzliche Textinformationen zusammen mit den meisten Fehlern zurückgeben. Diese erweiterten Fehlerinformationen können mithilfe der Funktion abgerufen InternetGetLastResponseInfo werden.