2013-10-08 12 views
8

लिए छवियों को अपलोड मैं इस समारोह में विभिन्न मुद्दों का एक बहुत हो रही है आने वाले:करते समय त्रुटियां एफ़टीपी

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; 
     } 

यह एफ़टीपी के लिए छवियों के 1000s अपलोड कर रहा है, और इस methos बहु लड़ी तरह से कहा जाता है।

विभिन्न त्रुटियाँ हैं:

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

संदेश: प्रचालन का समय समाप्त हो गया है

त्रुटि ट्रेस: ​​System.Net.FtpWebRequest.CheckError पर() सिस्टम पर। Net.FtpWebRequest.GetRequestStream()

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

त्रुटि संदेश: System.Net.FtpWebRequest.GetRequestStream() पर System.Net.FtpWebRequest.CheckError() पर

===: दूरस्थ सर्वर से

त्रुटि ट्रेस कनेक्ट करने में असमर्थ ================================================== ==

त्रुटि संदेश: अंतर्निहित कनेक्शन बंद था: प्राप्त होने पर एक अनपेक्षित त्रुटि हुई।

त्रुटि ट्रेस: ​​System.Net.FtpWebRequest.SyncRequestCallback (वस्तु obj) पर System.Net.FtpWebRequest.CheckError() पर System.Net.CommandStream.Abort (अपवाद ई) System.Net.FtpWebRequest.FinishRequestStage पर (कम से RequestStage चरण) System.Net.FtpWebRequest.GetRequestStream()

पर ================================ =======================

त्रुटि संदेश: परिवहन कनेक्शन में डेटा लिखने में असमर्थ: कनेक्शन कनेक्शन विफल हुआ क्योंकि कनेक्टेड पार्टी नहीं हुई समय की अवधि के बाद उचित प्रतिक्रिया दें, या स्थापित कनेक्शन विफल हो गया क्योंकि कनेक्टेड होस्ट resps में विफल रहा है दूसरी।

त्रुटि ट्रेस: ​​पर System.Net.Sockets.NetworkStream.Write (बाइट [] बफर, Int32 ऑफसेट, Int32 आकार) System.Net.FtpDataStream.Write पर (बाइट [] बफर, Int32 ऑफसेट, Int32 आकार) ================================================= ======

ये वही विधि से आने वाली कुछ त्रुटियां हैं जिन्हें मैंने LOG फ़ाइल से पुनर्प्राप्त किया था।

कोई विचार यह क्या हो सकता है? या मुझे कुछ और विवरण देने की ज़रूरत है?

+0

ऐसा लगता है कि आप के लिए **/अपने n से बात डब्ल्यू अपने संगठन में लोगों की ज़रूरत **। मुझे लगता है कि सभी त्रुटियां या तो 'एन/डब्ल्यू कनेक्टिविटी मुद्दे' या 'सर्वर प्रतिक्रिया नहीं दे रही हैं' ठीक है! – SridharVenkat

उत्तर

7

जब एक समय समाप्ति तक पहुँच जाता है निम्न अपवाद का सामना करना पड़ा है:

त्रुटि संदेश: अंतर्निहित कनेक्शन बंद कर दिया गया था: एक प्राप्त पर एक अप्रत्याशित त्रुटि हुई।

के रूप में MSDN दस्तावेज में विस्तार से बताया टाइमआउट का डिफ़ॉल्ट मान अनंत है लेकिन MSDN प्रलेखन एक गलती शामिल हैं: http://msdn.microsoft.com/fr-fr/library/vstudio/system.net.ftpwebrequest.timeout(v=vs.80).aspx

वास्तव में, डिफ़ॉल्ट मान 100000 एमएस (1 मिनट और 40 सेकंड) है इसलिए आप मूल्य टाइमआउट को अनंत के साथ घोषित कर सकते हैं: oFtpWebRequest.Timeout = -1;

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

संबंधित मुद्दे