c# - HttpListener running on Ubuntu/Mono returns 400 bad request -
मेरे पास एक समस्याग्रस्त समस्या है। Ubuntu 12.04LTS और मोनो (मोनो-पूर्ण-2.10.8.1) चलने वाले नेट अनुप्रयोग स्थानीय हॉस्ट पर एक एचटीटीपीएलस्टनर: 80 9 0 कभी भी मैं सर्वर से अनुरोध भेजता हूं कि वह 400-बुरा अनुरोध वापस भेजता है।
मुझे लगता है कि यह एक उबुंटू बात हो सकती है क्योंकि: - सटीक एक ही आवेदन प्रक्रिया Windows पर चलते समय ठीक से अनुरोध करती है वास्तव में, यह अनुरोध करता है कि क्या यह MSFT CLR के भीतर या Windows CLR के लिए मोनो में क्रियान्वित कर रहा है। - अन्य लॉगिंग के अनुसार बाँध सफल होता है - मेरे पास संदर्भ प्राप्त करने के तुरंत बाद लॉगिंग स्टेटमेंट है, जैसे:
try {var context = httpListener.GetContext (); लॉग। डिबग ("अनुरोध प्राप्त"); // हेन्डलर्स, आदि भेजें ...} पकड़ (अपवाद पूर्व) {लॉग। त्रुटि ("एचटीटीपीएलस्टेर त्रुटि: {0}", पूर्व। मेसेज); } अब Ubuntu सेटअप पर, यह लॉगिंग स्टेटमेंट कभी भी रिपोर्ट नहीं किया जाता है, लेकिन मैं अभी भी 400 वापस प्राप्त करने का प्रबंधन करता हूं, इसलिए मैं केवल मान सकता हूँ कि HttpListener को कभी भी अनुरोध नहीं मिला है या मुझे इसे संभाल करने के लिए कोई बदलाव देने से पहले प्रतिक्रिया उत्पन्न हुई।
अगर कुछ भी, कोई यह सुझा सकता है कि इसका निवारण कैसे करें? मैं लिनक्स में सर्वश्रेष्ठ में किशोर हूं। हालांकि iptables डिफ़ॉल्ट रूप से सभी को अनुमति देने के लिए सेट हैं, मैंने पोर्ट के लिए एक छेद लगाया है जो मैं सुन रहा हूं।
धन्यवाद
संपादित करें: इसके अलावा- ऊपर दिए गए स्निपेट में कभी भी अपवाद नहीं पकड़े गए हैं या तो।
खेद है कि मैं इस पर पार्टी के लिए बहुत देर कर रहा हूं, लेकिन आप किस आईपी या होस्टनाम हैं बाध्यकारी? मैंने पाया है कि मोनो के साथ HTTP शीर्ष लेख में मेजबाननाम उपसर्ग के साथ HOST हैडर की आवश्यकता होती है, जो कि aded है होस्टनाम उपसर्ग, i.e।
HttpListener http = new HttpListener (); http.Prefixes.Add ( "http://hostname.com:80/"); http.Start (); इसकी आवश्यकता है कि HTTP अनुरोध में जो कुछ भी है (तार पर) होस्ट है: hostname.com मौजूद है।
एक आईपी पता का उपयोग करते हुए, "127.0। 0.1 "," स्थानीयहोस्ट "," 0.0.0.0 "," + ", और" * "विंडोज पर काम करने लगते हैं, जब मैं मोनो पर उबंटू पर तैनात करता हूं, मुझे विशेष रूप से एक उपसर्ग जोड़ना होगा जो होस्टनाम या इंटरफ़ेस के आईपी का उपयोग करता है पता। ध्यान दें कि जब आईपी एड्रेस का इस्तेमाल करते हैं, तो इसे इंटरफ़ेस के लिए बाध्य होना चाहिए, न कि जो भी सार्वजनिक-बाहरी बाहरी आईपी पते से इसे मैप किया जा सके।
Comments
Post a Comment