Ich möchte Dateien übertragen, die meine Azure Web App auf einem FTP-Server außerhalb des Azure-Netzwerks erstellt. Alles, was ich bekomme, ist eine 0-Byte-Datei auf dem FTP-Server und ein "425 Kann keine Datenverbindung öffnen" Fehler in der Web App."425 Datenverbindung kann nicht geöffnet werden" beim Hochladen von Datei von der Azure-Website nach FTP
Gibt es eine Einstellung, die ich auf Azure Web App oder FTP Server vermisse? Die gleiche Web App auf meinem lokalen IIS Express funktioniert einwandfrei. Die Web App verwendet ASP .NET MVC 5.
EDIT 1:
Dies ist der Code, den ich mit der Datei senden:
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(ftp + fileName);
ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
ftpRequest.Credentials = new NetworkCredential(uid, pwd);
ftpRequest.ContentLength = fileBytes.Length;
Stream requestStream = ftpRequest.GetRequestStream();
requestStream.Write(fileBytes, 0, fileBytes.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
var status = response.StatusCode;
response.Close();
Acording to the MSDN der Passiv-Modus ist die Standardeinstellung ein.
EDIT 2:
Enabling-Server anmeldet dies die Ausgabe lautet:
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Created connection from <origin_ip> to <destination_ip>.
System.Net Information: 0 : [60572] Associating FtpWebRequest#23597360 with FtpControlStream#51898079
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Received response [220 Microsoft FTP Service]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Sending command [USER <user>]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Received response [331 Password required for <user>.]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Sending command [PASS *]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Received response [230 User <user> logged in.]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Sending command [OPTS utf8 on]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Received response [501 option not supported]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Sending command [PWD]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Received response [257 "/" is current directory.]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Sending command [TYPE I]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Received response [200 Type set to I.]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Sending command [PASV]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Received response [227 Entering Passive Mode (12,106,237,74,4,255).]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Sending command [STOR <file>]
System.Net Information: 0 : [60572] FtpControlStream#51898079 - Received response [425 Can't open data connection.]
System.Net Information: 0 : [60572] FtpWebRequest#23597360::(Releasing FTP connection#51898079.)
System.Net Error: 0 : [60572] Exception in FtpWebRequest#23597360::GetRequestStream - The remote server returned an error: (425) Can't open data connection..
at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
at System.Net.FtpWebRequest.RequestCallback(Object obj)
at System.Net.CommandStream.Dispose(Boolean disposing)
at System.IO.Stream.Close()
at System.IO.Stream.Dispose()
at System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
at System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
at System.Net.FtpWebRequest.GetRequestStream()
EDIT 3:
Ein weiterer Versuch:
System.Net Information: 0 : [58636] FtpWebRequest#9144495::.ctor(<ftp_address_and_file>)
System.Net Information: 0 : [58636] FtpWebRequest#9144495::GetRequestStream(Method=STOR.)
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Created connection from <origin_ip> to <destination_ip>.
System.Net Information: 0 : [58636] Associating FtpWebRequest#9144495 with FtpControlStream#57089836
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Received response [220 Microsoft FTP Service]
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Sending command [USER <user>]
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Received response [331 Password required for <user>.]
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Sending command [PASS *]
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Received response [230 User <user> logged in.]
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Sending command [OPTS utf8 on]
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Received response [501 option not supported]
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Sending command [PWD]
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Received response [257 "/" is current directory.]
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Sending command [TYPE I]
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Received response [200 Type set to I.]
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Sending command [PASV]
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Received response [227 Entering Passive Mode (12,106,237,74,5,4).]
System.Net Information: 0 : [58636] FtpControlStream#57089836 - Sending command [STOR <file>]
System.Net Information: 0 : [58636] FtpWebRequest#9144495::(Releasing FTP connection#57089836.)
System.Net Error: 0 : [58636] Exception in FtpWebRequest#9144495::GetRequestStream - The operation has timed out..
at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
at System.Net.FtpWebRequest.RequestCallback(Object obj)
at System.Net.CommandStream.Dispose(Boolean disposing)
at System.IO.Stream.Close()
at System.IO.Stream.Dispose()
at System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
at System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
at System.Net.FtpWebRequest.GetRequestStream()
Zeigen Sie uns Ihren Code. Welchen FTP-Client/welche Bibliothek verwenden Sie? –
Ist der FTP-Server im selben Netzwerk wie "Ihr lokaler IIS Express"? Oder ist es anderswo? –
Nein. Der FTP-Server befindet sich im Internet mit einer IP-Adresse. –