2013-10-21 9 views
6

का उपयोग करते समय अनुरोधित FTP कमांड समर्थित नहीं है, कृपया कोई नीचे दिए गए कोड को देखें और मुझे बताएं कि मैं क्या गलत कर रहा हूं। मैं तो बस हलकों में जा रहा हूँ ,,, किसी भी संकेत दिए गए बहुतएफ़टीपी अपलोड फ़ाइल HTTP प्रॉक्सी

public class FtpWebRequestUtil 
{ 
    private static string RemoteHost; 
    private static string RemoteFtpPath; 
    public static NetworkCredential Credential = new NetworkCredential(); 

    public FtpWebRequestUtil() 
    { 
    } 

    public FtpWebRequestUtil(string RemoteAddress, string RemotePath, string RemoteUser, string RemotePwd) 
    { 
     Credential.UserName = RemoteUser; 
     Credential.Password = RemotePwd; 
     RemoteHost = RemoteAddress; 
     RemoteFtpPath = RemotePath; 
    } 

    public string UploadFile(string localFilePath) 
    { 
     int startTime = Environment.TickCount; 
     // Console.WriteLine("Uploading File " + localFilePath); 
     try 
     { 
      FileInfo localFile = new FileInfo(localFilePath); //e.g.: c:\\Test.txt 
      byte[] buf = new byte[2048]; 
      int iWork; 
      string remoteFile = "ftp://" + RemoteHost + "/" + RemoteFtpPath + "/" + localFile.Name; 

      FtpWebRequest req = (FtpWebRequest) FtpWebRequest.Create(remoteFile); 
      // req.Proxy = 

      req.Credentials = Credential; 


      // FtpWebRequest req = (FtpWe 

      req.UseBinary = true; 
      req.KeepAlive = true; 
      req.Method = WebRequestMethods.Ftp.UploadFile; 
      StreamWriter myStreamWriter = new StreamWriter(req.GetRequestStream()); 
      myStreamWriter.Write(new StreamReader("TestFiles\\" + localFile.Name).ReadToEnd()); 
      myStreamWriter.Close(); 
      FtpWebResponse myFtpWebResponse = (FtpWebResponse) req.GetResponse(); 
      Console.WriteLine("Upload File Complete, status: " + myFtpWebResponse.StatusDescription); 

      myFtpWebResponse.Close(); 
      return "SUCCESS"; 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("There was an error connecting to the FTP Server."); 
      Console.WriteLine(ex.Message); 
      throw ex; 
     } 
     Console.WriteLine("Time taken for downloading file is " + (Environment.TickCount - startTime).ToString()); 
     return "FAILURE"; 
    } 


    ************************      ********************************* 
    FtpWebRequestUtil ftpClient = new FtpWebRequestUtil(FtpUrl, InputFolder, FtpUser, FtpPassword); 
    try 
    { 
     Thread.Sleep(5000); 
     ftpClient.UploadFile(UploadingFileName); 
       } 
     catch (Exception exception) 
     { 
      Assert.Fail(exception.Message); 
     } 
     finally 
     { 
      ftpClient = null; 
     } 
    } 
} 
+0

क्या त्रुटि है? – HappyLee

+0

FTP प्रॉक्सी – vishal

उत्तर

8
req.Proxy = new WebProxy(); // initialize this FtpWebRequest property 
+0

का उपयोग करते समय ftp कमांड समर्थित नहीं है, ठीक है, अब ऑब्जेक्ट रेफरेंस को इंस्टेंस पर सेट नहीं किया जा रहा है): – vishal

+0

आपने कोड की इस पंक्ति को कहां जोड़ा? कोड – HappyLee

+0

req.Proxy = new WebProxy() के साथ कोड पोस्ट करें; req.Proxy = शून्य; req.Credentials = प्रमाण पत्र; // FtpWebRequest अनुरोध = (FtpWe req.UseBinary = true req.UsePassive = true req.KeepAlive = true StreamWriter myStreamWriter = नया StreamWriter (req.GetRequestStream()); – vishal

0

अपवाद ही जवाब है की सराहना की है - यह समर्थित नहीं है। शायद आपके पास कुछ HTTP प्रॉक्सी है जो एफ़टीपी से सीधा कनेक्शन रोक रही है। MS documentation के अनुसार, यदि निर्दिष्ट प्रॉक्सी एक HTTP प्रॉक्सी है, तो केवल डाउनलोडफाइल, ListDirectory, और ListDirectoryDetails आदेश समर्थित हैं - इसलिए अपलोडफाइल नहीं है।

2

ऐसा लगता है कि केवल RETR, LIST, और NLST तरीकों System.Net.FtpWebRequest द्वारा समर्थित हैं जब एक HTTP प्रॉक्सी कॉन्फ़िगर किया गया है और यह है कि आप अपने कोड में एक प्रॉक्सी की स्थापना नहीं कर रहे हैं कोई फर्क नहीं पड़ता: अगर एक HTTP प्रॉक्सी (नहीं FTP प्रॉक्सी) सिस्टम प्रॉक्सी सेटिंग्स में कॉन्फ़िगर किया गया है (यानी: इंटरनेट विकल्प \ कनेक्शन \ LAN सेटिंग \ प्रॉक्सी सर्वर \ अपने LAN के लिए प्रॉक्सी सर्वर का उपयोग करें), तो FTP सर्वर पर अपलोड करने का प्रयास करते समय आपको यह त्रुटि मिल जाएगी।

वर्कअराउंड HTTP प्रॉक्सी के उपयोग को बंद करने के लिए सिस्टम सेटिंग्स को बदलने के लिए IE का उपयोग करता है। आप प्रभावित कोड की पहुंच है लेकिन अगर समाधान उदाहरण के लिए, अनुरोध शून्य पर की Proxy गुण सेट करने के लिए है:

request.Proxy = null; 
+0

स्पष्टीकरण के लिए +1 भी सही उत्तर होना चाहिए। –

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