2012-10-29 14 views
12

मैं एक एपीआई बना रहा हूं जिसमें एक फ़ाइल को एक तरह से अपलोड करना संभव है।एएसपी.NET वेब एपीआई में अनुरोधों से सामग्री-श्रेणी शीर्षलेख क्यों छीन लिया गया है?

इस Stackoverflow question and answer पर जाकर, सामग्री-श्रेणी शीर्षलेख इसके लिए सबसे उपयुक्त लगता है।

हालांकि, नियंत्रक कार्रवाई में हेडर को तोड़ दिया गया है, इसलिए मैं इसे एक्सेस नहीं कर सकता। जब मैं 'श्रेणी' शीर्षलेख का उपयोग करता हूं तो यह अनुरोध हेडर संग्रह में उपलब्ध है।

कोई भी विचार है कि सामग्री-रेंज अनुरोध से क्यों छीन ली गई है?

उत्तर

8

इसे हटाया नहीं गया है। Request.Content.Headers में इसकी तलाश करें। ऐसा लगता है कि वे हेडर को HTTP/1.1 विनिर्देशों के साथ गठबंधन करते हैं - एंटीटी हेडर को Request.Content.Headers पर ले जा रहे हैं।
मैंने इसे नमूना अनुरोध में आजमाया और इसे वहां पाया।

मुझे RFC 2616 के प्रासंगिक अनुभाग पढ़ने के बाद यह परिवर्तन मिला। मैं हाल ही में इस पर जा रहा हूं क्योंकि मुख्य लेखक, फील्डिंग, आरईएसटी वास्तुशिल्प शैली का आविष्कारक भी है, और मैं एएसपी.नेट वेब एपीआई का उपयोग करके उस शैली का पालन करने की कोशिश कर रहा हूं।

मुझे एहसास हुआ कि "अनुरोध", "प्रतिक्रिया", "सामान्य" (अनुरोध और प्रतिक्रिया दोनों पर उपयोग नहीं किया गया है लेकिन इकाई से संबंधित नहीं) और "इकाई" शीर्षकों के बीच एक अंतर था। के रूप में अगर ASP.NET टीम वर्ग मॉडल संशोधित बेहतर आरएफसी दर्पण

लग रहा है, HttpHeaders के तीन उपवर्गों बनाने:

  • HttpRequestHeaders "5.3 अनुरोध हेडर फील्ड्स" और "4.5 जनरल हैडर फील्ड्स" के लिए
  • "6.2 प्रतिक्रिया हेडर फील्ड" और "4.5 जनरल हैडर फील्ड्स" के लिए HttpResponsHeaders
  • HttpContentHeaders
"7.1 इकाई हैडर फील्ड्स" के लिए

नोट, हालांकि एमएसडीएन कक्षा का विवरण थोड़ा गलत है - आरएफसी में कोई सामग्री शीर्षलेख परिभाषा नहीं है, लेकिन यह स्पष्ट है कि उनका मतलब एंटीटी हेडर था।

+0

शानदार खोज। यह वास्तव में चालाकी से छुपा था। – Toad

+0

क्या आप इस बात से सहमत होंगे कि अपलोड के दौरान फ़ाइल के हिस्सों को भेजने के लिए सामग्री-श्रेणी उचित हैडर? मैं इस हेडर और रेंज हेडर के बीच संदेह कर रहा था। – Toad

+1

मुझे इसके साथ कोई अनुभव नहीं है, लेकिन spec पढ़ने से - हाँ। रेंज एक अनुरोध हैडर - एक सीमा का अनुरोध करने के लिए प्रतीत होता है।एंटिटी हेडर होने के नाते सामग्री-रेंज का अर्थ एक पुट अनुरोध पर है (क्लाइंट के लिए सर्वर को पहचानने के लिए एक मौजूदा संसाधन के एक हिस्से को प्रतिस्थापित करने के लिए भेजा जा रहा है) और जीईटी प्रतिक्रिया पर (सर्वर के लिए पहचानने के लिए ग्राहक जो खंड वापस आ रहा है)। –

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