2012-09-28 14 views
13

अंतर लौटने में अंतर क्या है उदा।एमवीसी 4 वेब एपीआई एक्शन रिटर्न: प्रकार बनाम HttpResponseMessage

public class MyController : ApiController 
    { 
     public IEnumerable<MyType> Get()... 

बनाम

रिटर्निंग HttpResponseMessage:

public class MyController : ApiController 
    { 
     public HttpResponseMessage Get()... 

??

क्या एमवीसी किसी भी तरह से HttpResponseMessage सामग्री ऑब्जेक्ट में टाइप करता है? पेज पर परिणाम स्पष्ट रूप से जोड़े जाने के अलावा पृष्ठ के नतीजे समान दिखता है।

ग्राहक के लिए क्या अंतर है?

उत्तर

16

कोई फर्क नहीं पड़ता।

यदि आप सीएलआर प्रकार वापस करते हैं, तो इसे HttpResponseMessage के साथ लपेटा जाएगा।

एकमात्र अंतर यह है कि यदि आप HttpResponseMessage लौटाते हैं तो आपको सीधे HTTP के साथ काम करने का मौका मिलता है - ताकि आप हेडर सेट कर सकें, MediaTypeFormatters बाईपास करें और इसी तरह।

यह व्यक्तिगत वरीयता और/या आपकी कार्रवाई में की गई गतिविधि की बात है।

+0

धन्यवाद। मुझे लगता है कि बाहर। रिटर्निंग 'HttpResponseMessage' सभी प्रकार की सेवाओं के साथ अधिक लचीलापन देता है जो प्रतिक्रिया में शामिल हो सकते हैं। –

+1

असल में यदि आप नई सहायता पृष्ठ जनरेटर कार्यक्षमता का उपयोग कर रहे हैं तो एक छोटा अंतर होता है। HttpResponseMessage के मामले में यह रिटर्न प्रकार निर्धारित करने में सक्षम नहीं होगा, इस प्रकार यह नमूना डेटा उत्पन्न नहीं करेगा। कम से कम यह "एएसपी.नेट पतन 2012 अपडेट निर्मित पूर्वावलोकन" के साथ सच है – mdonatas

+1

@ मॉन्डाटास HttpResponseMessage मदद जेनरेटर की शक्ति को कम करने का वास्तव में अच्छा काम करता है। एक HttpResponseMessage जेनेरिक होता था, लेकिन "सुरक्षा प्रकार" कारणों के लिए, इसे हटा दिया गया था - http://aspnetwebstack.codeplex.com/discussions/355170 – Snixtor

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