2013-03-11 3 views
5

HttpResponseHeaders में दिखाई देने वाली एकमात्र विधि है जो हेडर प्रकार के लिए स्ट्रिंग प्रकार लेती है। मुझे आश्चर्य हुआ कि .NET ने स्ट्रिंग में HttpResponseHeader प्रकार contants की एक सूची प्रदान की थी?क्या HttpResponseHeader जोड़ने के लिए कोई सामग्री शीर्षलेख प्रकार है?

तो मैं कर सकते हैं:

HttpResponseMessage response = Request.CreateResponse.........; 
response.Headers.Add(xxxxx.ContentRange, "something"); 

मैं देख सकता हूँ वहाँ HttpResponseHeader में Enum की एक सूची है, लेकिन यह conrespondingly स्ट्रिंग मान प्रदान नहीं करता है ...

यानी HttpResponseHeader.ContentRange, लेकिन सही हेडर स्ट्रिंग होना चाहिए सामग्री रेंज

मुझे सही अगर मैं गलत हूँ ...

उत्तर

5

वहाँ तीन दृढ़ता से टाइप System.Net.Http.Headers नाम स्थान में HTTP हेडर वर्ग हैं:

HttpContentHeaders (जोके माध्यम से सुलभ है System.Net.Http.HttpContent प्रकारों में से किसी) कासंपत्ति के लिए सामग्री प्रकार, सामग्री-लंबाई, सामग्री-एन्कोडिंग आदि पूर्व निर्धारित गुण ... (जो आप हेडर होने लगते है के बाद थे)।

आप उन्हें इस तरह सेट कर सकते हैं:

var content = new StringContent("foo"); 
content.Headers.Expires = DateTime.Now.AddHours(4); 
content.Headers.ContentType.MediaType = "text/plain"; 

... और हैडर नाम सही ढंग से स्थापित किया जाएगा।

+0

ओ वाह, कैसे ... मैं इसे याद कर सकता हूं .... धन्यवाद! –

1

शायद तुम कुछ इस तरह की कोशिश कर सकते हैं।

var whc = new System.Net.WebHeaderCollection(); 
whc.Add(System.Net.HttpResponseHeader.ContentRange, "myvalue"); 
Response.Headers.Add(whc); 

एक WebAPI संदर्भ में, अंतिम पंक्ति हो सकता है:

HttpContext.Current.Response.Headers.Add(whc); 

वैसे भी, @ ServiceGuy का जवाब एक WebAPI/MVC संदर्भ में जाना

आशा इस में मदद मिलेगी

तरीका है
+0

HttpResponseHeaders.Add ही स्वीकार करते हैं (स्ट्रिंग, स्ट्रिंग) और (स्ट्रिंग, IEnumerable ) ... deosn't:

मैं निम्न कार्य करके मेरी WCF सेवा कार्यान्वयन में ऐसा करने में सक्षम था WebHeaderCollection को स्वयं स्वीकार करें ... –

+0

@ किंग्सहान: वेबपै/एमवीसी संदर्भ – jbl

0

आप WebRequest और WebResponse पर संपत्ति द्वारा सामान्य शीर्षलेख प्राप्त कर सकते हैं, जैसे HttpWebRequest.ContentType

0

सी # में एनम से स्ट्रिंग में एक अंतर्निहित रूपांतरण है। इन कार्य पर विचार करें:

int val = 5; 
HttpResponseHeader header = HttpResponseHeader.Allow 

अब, val.ToString() स्ट्रिंग "5" वापस आ जाएगी, लेकिन header.ToString()"Allow" वापस आ जाएगी। तो मैं विनम्रतापूर्वक उपयोग करने का सुझाव

response.Headers.Add(HttpResponseHeader.ContentRange.ToString(), "something"); 
+1

enum के लिए मेरा उत्तर संपादित किया गया है स्ट्रिंग के लिए सामग्री रेंज भी "ContentRange" होने जा रही है, लेकिन सही हैडर "सामग्री-श्रेणी" है, यही वह है जो मैंने कहा था सवाल में –

+0

हम्म। क्या हेडर सही तरीके से स्वरूपित है? ([फिडलर] जैसे कुछ अनुरोधों को देखकर (http://www.fiddler2.com/fiddler2/) –

+0

ऐसा लगता है कि रेंज और कंटेंट-रेंज हेडर के लिए विशेष विचार आते हैं। [यहां कुछ पढ़ने की सामग्री है] (http: //www.piotrwalat.net/file-download-service-with-resume-support-using-asp-net-web-api/) –

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