मुझे एक एफ़टीपी साइट पर विंडोज सेवा को जोड़ने में समस्या आ रही है।रिमोट सर्वर ने एक त्रुटि लौटा दी: 227 निष्क्रिय मोड दर्ज करना (500 oops vs_utility_recv_peek: कोई डेटा नहीं)
मुझे किसी अन्य डेवलपर से विंडोज सेवा मिली है। सेवा किसी तृतीय पक्ष सर्वर से जुड़ती है, एक सीएसवी फ़ाइल डाउनलोड करती है और फिर इसे संसाधित करती है। किसी कारण से, सेवा ने काम बंद कर दिया (एक साल पहले, मुझे परियोजना देने से पहले)।
तो मैं मूलभूत बातें पर वापस गया, एक कंसोल ऐप बनाया और केवल उस ऐप में कनेक्शन/फ़ाइल डाउनलोड फ़ंक्शन का प्रयास किया। मैं एफ़टीपी से कनेक्ट करने के कई अलग अलग तरीके की कोशिश की है, लेकिन उन सभी को अपने आवेदन के लिए एक ही त्रुटि:
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftpaddress/filename.csv");
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential("username", "password");
request.UsePassive = true;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
Console.WriteLine(reader.ReadToEnd());
Console.WriteLine("Download Complete, status {0}", response.StatusDescription);
reader.Close();
response.Close();
:
The remote server returned an error: 227 Entering Passive Mode()
यह कई तरीके मैं कोशिश की है में से एक है
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
मैं कई मंचों कि झूठी फिक्स करने के लिए इन त्रुटियों UsePassive संपत्ति की स्थापना में पढ़ते हैं, लेकिन यह सब मुझे क्या हुआ है कि मैं एक सिंटैक्स त्रुटि के बजाय, जैसा कि नीचे मिल गया था: लेकिन यह इस ओर से नीचे गिर जाता है:
The remote server returned an error: (500) Syntax error, command unrecognized.
फ़ाइल किसी तृतीय पक्ष FTP सर्वर पर होस्ट की गई है जिसका मेरा कोई नियंत्रण नहीं है। मैं यूआरएल को ब्राउज़र में पेस्ट कर सकता हूं, और मुझे उपयोगकर्ता नाम और पासवर्ड के लिए संकेत दिया जाता है, जो तब मुझे अनुमति देता है और मैं फ़ाइल डाउनलोड कर सकता हूं।
समस्या के कारण के रूप में हमारी फ़ायरवॉल को खत्म करने के लिए, मैंने आंतरिक नेटवर्क और वाईफ़ाई (जो फ़ायरवॉल के पीछे नहीं है) पर ऐप चलाया, और इससे कोई फर्क नहीं पड़ता। मैं डिफ़ॉल्ट, सक्रिय और निष्क्रिय मोड में FileZilla के माध्यम से भी जुड़ा हुआ था, और यह हर बार काम करता था। तो वहां कोई समस्या नहीं है।
तो फिर मैंने वायरशर्क चलाया।
यहाँ और कब्जा जब जोड़ने (और अनुत्तीर्ण) एप्लिकेशन का उपयोग करने, सही करने के लिए निष्क्रिय सेट के साथ है: यहाँ Filezilla (यानी एक सफल एक) का उपयोग कर तार पर कब्जा की एक छवि, निष्क्रिय मोड में है :
तो जैसा कि तुम असफल संबंध में ऊपर देख सकते हैं, मैं में सर्वर ठीक करने के लिए लॉग इन कर सकते। फिर किसी भी कारण से एक अतिरिक्त अनुरोध भेजा जाता है, अर्थात् "प्रकार I", जो "बाइनरी मोड पर स्विचिंग" की प्रतिक्रिया को संकेत देता है। कि नीचे, मैं निम्नलिखित मिल:
500 oops: vsf_sysutil_recv_peek: no data
इसके अलावा, मैं भी इसे फिर से गलत पर निष्क्रिय संपत्ति सेट करने के बाद भाग गया, और यह है कि क्या मैं उस समय मिल गया है:
तो मेरा सवाल दो गुना है;
1, यदि मैं किसी भी तरह से UsePassive समस्या से पहले मिलता हूं और उस संपत्ति को झूठा सेट करता हूं, तो क्या यह मेरी समस्या का समाधान करेगा?
2, UsePassive प्रॉपर्टी को अनदेखा करते हुए, मैं ऐप से फ़ाइल क्यों डाउनलोड नहीं कर सकता, लेकिन हर जगह से कर सकता हूं?
हां, यदि आप UsePassive = false का उपयोग करते हैं तो यह किसी भी 2xx कोड गायब हो जाना चाहिए ** त्रुटियां नहीं हैं ** इसलिए मुझे लगता है कि यह .NET कोड में एक बग है (त्रुटि कुछ और है लेकिन यह अंतिम निष्पादित ऑपरेशन की रिपोर्ट करता है)। –
प्रतिक्रिया के लिए धन्यवाद। मुझे पता है कि 227 त्रुटि कोड नहीं है, इसलिए मुझे लगता है कि .NET ऐप रिटर्न देता है क्योंकि यह सर्वर से आखिरी सफल प्रतिक्रिया थी। मेरा नेट कोड शीर्ष पर है। क्या कुछ गलत होने पर आप पर कूदता है? मैंने आज विभिन्न तरीकों के बहुत सारे प्रयास किए हैं, लेकिन उनमें से सभी एक ही काम करते हैं। – odinel
नहीं, कुछ भी गलत नहीं लगता है (लेकिन मैं अनुरोध जोड़ने का प्रयास करता हूं। उपयोग करें। सत्य = सत्य, उपयोग के बिना और बिना दोनों)। ऐसा लगता है कि एक सर्वर त्रुटि (या टीसीपी कनेक्शन स्थापित करने का प्रयास करते समय फ़ायरवॉल की वजह से क्लाइंट त्रुटि?) –