2011-05-06 5 views
9

क्या मुझे आईआईएस पर HTTP स्टेटस कोड 411 प्रतिबंध से प्राप्त करने के लिए WebRequest ऑब्जेक्ट में कुछ यादृच्छिक कचरा डेटा को बस थप्पड़ मारने की आवश्यकता है?क्या मैं सी # से आईआईएस तक एक खाली HTTP पोस्ट वेबआरक्वेट ऑब्जेक्ट भेज सकता हूं?

मेरे पास एक एमवीसी 3 ऐप में एक एचटीपीपोस्ट एक्शन विधि है जो क्वेरीस्ट्रिंग में पारित सभी प्रासंगिक जानकारी के साथ एक POST अनुरोध का उपभोग करती है (कोई शरीर आवश्यक नहीं है)।

[HttpPost] public ActionResult SignUp(string email) { ... } 

यह विजुअल स्टूडियो के वेब होस्ट, कैसिनी में निर्मित शानदार काम करता है। दुर्भाग्यवश, एक बार जब एमवीसी कोड आईआईएस [7.5 आर 2008 पर 7.5] पर लाइव था, तो सर्वर मेरे बाहरी सी # फॉर्म ऐप से इसे दबाते समय एक HTTP त्रुटि कोड वापस पिच कर रहा है।

WebRequest request = WebRequest.Create("http://somewhere.com/signup/[email protected]"); 
request.Method = "POST"; 
using (WebResponse response = request.GetResponse()) 
using (Stream responseStream = response.GetResponseStream()) 
using (StreamReader responseReader = new StreamReader(responseStream)) { 
    // Do something with responseReader.ReadToEnd(); 
} 

उत्तर

19

बाहर कर देता है तो आप इस बस के अनुरोध पर एक खाली सामग्री की लंबाई को थप्पड़ मारने से पहले आप इसे भेजने के द्वारा के माध्यम से जाना प्राप्त कर सकते हैं:

The remote server returned an error: (411) Length Required.

यहाँ बुला कोड है।

WebRequest request = WebRequest.Create("http://somewhere.com/signup/[email protected]"); 
request.Method = "POST"; 
request.ContentLength = 0; 

सुनिश्चित नहीं हैं कि स्पष्ट रूप से एक खाली लंबाई बनाम एक जिसका अर्थ दे रही है एक फर्क नहीं पड़ता, लेकिन आईआईएस खुश के बाद मैंने किया था। इसके आसपास शायद अन्य तरीके हैं, लेकिन यह काफी आसान लगता है।

+0

बढ़िया, बस मेरी ज़िंदगी बचाओ। मेरी तरफ से वोट ऊपर – rahularyansharma

1

मेरा मानना ​​है कि आप एक हैडर कभी भी सामग्री-लंबाई आप एक वेब सर्वर के लिए एक अनुरोध पोस्ट स्थापित करने के लिए आवश्यक हैं:

http://msdn.microsoft.com/en-us/library/system.web.httprequest.contentlength.aspx

आप इसे परीक्षण करने के लिए एक GET अनुरोध की कोशिश कर सकते।

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