Freigeben über


WinINet FtpPutFile gibt Erfolg zurück, wenn der Status 451 zurückgegeben wird

Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem die Windows Internet -Funktion (WinINet) FtpPutFile weiterhin TRUE zurückgibt, auch wenn der Vorgang mit dem Status 451 fehlschlägt.

Originalproduktversion: Internet Explorer 10, 9
Ursprüngliche KB-Nummer: 2790777

Symptome

Die Wininet.dll-API FtpPutFile gibt WAHR zurück, auch wenn der Vorgang mit dem folgenden Status fehlschlägt:

451 – Angeforderte Aktion abgebrochen: lokaler Fehler bei der Verarbeitung.

Die Abfolge von Ereignissen, die zu diesem Ergebnis führen, ähnelt folgendem:

FTP:Response to Port 28376, '230 Login successful.'
FTP:Response to Port 28376, '200 Switch 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 256x213+154 = 54682 gesendet)
FTP:Response to Port 28376, '451 Failure writing to local file.'

Ursache

Die WinINet-Funktion FtpPutFile (einschließlich sowohl als FtpPutFileWauch FtpPutFileA ) meldet den Statuscode als WAHR, obwohl die interne WinINet-Implementierung der FtpPutFile Funktion bereits die Fehlerantwort von 451 Fehler beim Schreiben in lokale Dateifehler vom Server erfasst hat.

Problemumgehung

Um dieses Problem zu umgehen, überprüfen Sie den RückgabestatuscodeFtpPutFile, 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.

Notiz

Das FTP-Protokoll kann zusätzliche Textinformationen zusammen mit den meisten Fehlern zurückgeben. Diese erweiterten Fehlerinformationen können mithilfe der InternetGetLastResponseInfo Funktion abgerufen werden.