2013-10-08 6 views
8

ich viele verschiedene Themen in dieser Funktion bekommen:Fehler kommen, während Bilder auf FTP-Upload

public static bool UploadToFTP(string strFileName, string strFolderName) 
     { 
      bool isUploaded = false; 
      string strFilename = string.Empty; 
      string strFtpURI = string.Empty; 
      string strFtpUserId = string.Empty; 
      string strFtpPassword = string.Empty; 
      byte[] buffer = null; 
      FileInfo oFileInfo = null; 
      FileStream oFileStream = null; 
      FtpWebRequest oFtpWebRequest = null; 

      try 
      { 
       strFilename = strFileName; 
       oFileInfo = new FileInfo(strFilename); 
       strFtpURI = Constants.FtpUri; 
       strFtpUserId = Constants.FtpUserID; 
       strFtpPassword = Constants.FtpPassword; 

       oFtpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(strFtpURI + "/" + strFolderName + "/" + oFileInfo.Name)); 

       oFtpWebRequest.Credentials = new NetworkCredential(strFtpUserId, strFtpPassword); 
       oFtpWebRequest.Proxy = null; 
       oFtpWebRequest.KeepAlive = false; 
       oFtpWebRequest.Method = WebRequestMethods.Ftp.UploadFile; 
       oFtpWebRequest.UseBinary = true; 
       oFtpWebRequest.ContentLength = oFileInfo.Length; 

       int iBufferLength = 2084; 

       buffer = new byte[iBufferLength]; 

       int iContentLength = 0; 

       oFileStream = oFileInfo.OpenRead(); 

       try 
       { 
        iContentLength = oFileStream.Read(buffer, 0, iBufferLength); 

        using (Stream oStream = oFtpWebRequest.GetRequestStream()) 
        { 
         while (iContentLength != 0) 
         { 
          oStream.Write(buffer, 0, iContentLength); 

          iContentLength = oFileStream.Read(buffer, 0, iBufferLength); 
         } 
         isUploaded = true; 
         FtpUpload.TotalKBFilesUploaded = FtpUpload.TotalKBFilesUploaded + (int)(oFileInfo.Length/1000); 
        } 
       } 
       catch (Exception ex) 
       { 

       } 
       finally 
       { 
        if (oFtpWebRequest != null) 
        { 
         oFtpWebRequest.Abort(); 
         oFtpWebRequest = null; 
        } 

        if (buffer != null) 
        { 
         buffer = null; 
        } 

        if (oFileStream != null) 
        { 
         oFileStream.Close(); 
         oFileStream.Dispose(); 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
      } 
      finally 
      { 
       oFileInfo = null; 
      } 

      return isUploaded; 
     } 

Dies wird 1000s Bilder auf FTP-Upload und diese methos wird in Multi-Threaded Art und Weise genannt.

Verschiedene Fehler sind:

===================================== ==================

Nachricht: Der Betrieb

Fehler Trace abgelaufen ist: bei System.Net.FtpWebRequest.CheckError() bei System. (Net.FtpWebRequest.GetRequestStream)

======================================

Fehlermeldung: konnte keine Verbindung zum Remote-Server

Fehler Trace verbinden: bei System.Net.FtpWebRequest.CheckError() bei System.Net.FtpWebRequest.GetRequestStream()

=== ================================================= ==

Fehlermeldung: Die zugrunde liegende Verbindung wurde geschlossen: Bei einem Empfang ist ein unerwarteter Fehler aufgetreten.

Fehler Trace: bei System.Net.FtpWebRequest.CheckError() bei System.Net.FtpWebRequest.SyncRequestCallback (Object obj) bei System.Net.CommandStream.Abort (Exception e) bei System.Net.FtpWebRequest.FinishRequestStage (RequestStag Stufe) bei System.Net.FtpWebRequest.GetRequestStream()

================================ =======================

Fehlermeldung: Daten können nicht auf die Transportverbindung geschrieben werden: Ein Verbindungsversuch ist fehlgeschlagen, weil die verbundene Partei dies nicht getan hat nach einer gewissen Zeit richtig reagieren, oder eine Verbindung konnte nicht hergestellt werden, weil der angeschlossene Host versagt hat ond.

Fehler Trace: bei System.Net.Sockets.NetworkStream.Write (Byte [] Puffer, Int32 Offset, Int32 Größe) bei System.Net.FtpDataStream.Write (Byte [] Puffer, Int32 Offset, Int32 size) =================================================== ======

Dies sind einige Fehler von der gleichen Methode, die ich aus der LOG-Datei abgerufen.

Irgendeine Idee, was könnte das verursachen? Oder muss ich etwas mehr Details geben?

+0

Es sieht aus wie Sie benötigen, um ** auf Ihre n/w Jungs in Ihrer Org sprechen **. Ich sehe alle Fehler sind entweder 'n/w Connectivity Issues 'oder' Server reagiert nicht richtig '! – SridharVenkat

Antwort

7

Die folgende Ausnahme auftritt, wenn ein Timeout erreicht ist:

Fehlermeldung: Die zugrunde liegende Verbindung wurde geschlossen: Ein unerwarteter Fehler ist aufgetreten auf ein empfangen.

Wie erläutert in der Dokumentation Msdn der Standardwert des Timeouts unendlich ist, aber das Msdn Dokumentation enthält einen Fehler: http://msdn.microsoft.com/fr-fr/library/vstudio/system.net.ftpwebrequest.timeout(v=vs.80).aspx

In der Tat, ist der Standardwert 100000 ms (1 min und 40 sec) Sie können also den Wert Timeout mit: oFtpWebRequest.Timeout = -1;

http://www.sidesofmarch.com/index.php/archive/2012/04/06/damn-the-documentation-ftpwebrequest-timeout-default-value-is-not-infinite/