2014-06-13 12 views
5

मुझे एक एफ़टीपी साइट पर विंडोज सेवा को जोड़ने में समस्या आ रही है।रिमोट सर्वर ने एक त्रुटि लौटा दी: 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 के माध्यम से भी जुड़ा हुआ था, और यह हर बार काम करता था। तो वहां कोई समस्या नहीं है।

तो फिर मैंने वायरशर्क चलाया।

enter image description here

यहाँ और कब्जा जब जोड़ने (और अनुत्तीर्ण) एप्लिकेशन का उपयोग करने, सही करने के लिए निष्क्रिय सेट के साथ है: यहाँ Filezilla (यानी एक सफल एक) का उपयोग कर तार पर कब्जा की एक छवि, निष्क्रिय मोड में है :

enter image description here

तो जैसा कि तुम असफल संबंध में ऊपर देख सकते हैं, मैं में सर्वर ठीक करने के लिए लॉग इन कर सकते। फिर किसी भी कारण से एक अतिरिक्त अनुरोध भेजा जाता है, अर्थात् "प्रकार I", जो "बाइनरी मोड पर स्विचिंग" की प्रतिक्रिया को संकेत देता है। कि नीचे, मैं निम्नलिखित मिल:

500 oops: vsf_sysutil_recv_peek: no data

इसके अलावा, मैं भी इसे फिर से गलत पर निष्क्रिय संपत्ति सेट करने के बाद भाग गया, और यह है कि क्या मैं उस समय मिल गया है:

enter image description here

तो मेरा सवाल दो गुना है;

1, यदि मैं किसी भी तरह से UsePassive समस्या से पहले मिलता हूं और उस संपत्ति को झूठा सेट करता हूं, तो क्या यह मेरी समस्या का समाधान करेगा?

2, UsePassive प्रॉपर्टी को अनदेखा करते हुए, मैं ऐप से फ़ाइल क्यों डाउनलोड नहीं कर सकता, लेकिन हर जगह से कर सकता हूं?

+0

हां, यदि आप UsePassive = false का उपयोग करते हैं तो यह किसी भी 2xx कोड गायब हो जाना चाहिए ** त्रुटियां नहीं हैं ** इसलिए मुझे लगता है कि यह .NET कोड में एक बग है (त्रुटि कुछ और है लेकिन यह अंतिम निष्पादित ऑपरेशन की रिपोर्ट करता है)। –

+0

प्रतिक्रिया के लिए धन्यवाद। मुझे पता है कि 227 त्रुटि कोड नहीं है, इसलिए मुझे लगता है कि .NET ऐप रिटर्न देता है क्योंकि यह सर्वर से आखिरी सफल प्रतिक्रिया थी। मेरा नेट कोड शीर्ष पर है। क्या कुछ गलत होने पर आप पर कूदता है? मैंने आज विभिन्न तरीकों के बहुत सारे प्रयास किए हैं, लेकिन उनमें से सभी एक ही काम करते हैं। – odinel

+0

नहीं, कुछ भी गलत नहीं लगता है (लेकिन मैं अनुरोध जोड़ने का प्रयास करता हूं। उपयोग करें। सत्य = सत्य, उपयोग के बिना और बिना दोनों)। ऐसा लगता है कि एक सर्वर त्रुटि (या टीसीपी कनेक्शन स्थापित करने का प्रयास करते समय फ़ायरवॉल की वजह से क्लाइंट त्रुटि?) –

उत्तर

10

अब समस्या हल हो गई है। यह कैस्परस्की की अंतर्निहित फ़ायरवॉल बन गया जो कनेक्शन को अवरुद्ध कर रहा था। यह परेशान है कि जब मैंने कनेक्ट करने का प्रयास किया तो उसने मुझे चेतावनी के साथ प्रस्तुत नहीं किया, लेकिन मेरे पीसी को जानना आश्वस्त है।

सुराग 227 वापसी की विस्तार से किया गया था:

10051 – A socket operation was attempted to an unreachable network

इसके अलावा, गूगल आदि के माध्यम से इस तक पहुंच गया किसी के लिए, दूरस्थ सर्वर से कॉन्फ़िगर किया गया था केवल निष्क्रिय कनेक्शन की अनुमति है, जिसके कारण मैं हो रही थी 500 वाक्यविन्यास त्रुटि। फ़ाइल डाउनलोड करते समय वायर कैप्चर का अध्ययन करना पता चला कि सक्रिय रूप से चयनित होने पर असफल होने पर फ़ाइलज़िला वास्तव में निष्क्रिय मोड पर वापस आ जाता है लेकिन विफल रहता है।

मेरे मूल पोस्ट में कोड अब ठीक काम करता है।

+0

तो मुझे कैस्पर्सकी के साथ क्या करना चाहिए? –

+0

मुझे एक ही समस्या थी, लेकिन यह कैस्पर्सकी नहीं था, यह आईआईएस 8.5 था। मुझे समस्या को ठीक करने के लिए यहां उत्तर का उपयोग करके एफ़टीपी सेवा को पुनरारंभ करना पड़ा: http://serverfault.com/questions/309964/why-doesnt-iis-7-5-ftp-respect-the-passive-port-range- के लिए-सादे एफ़टीपी – LandonC

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