2012-06-05 12 views
8

मैं इस स्क्रीनकास्ट में वर्णित के रूप में एक HttpResponseException जुटाने की कोशिश कर रहा हूँ (के बारे में 1 में मिनट)स्वीकार नहीं कर HttpResponseException HttpStatusCode

throw new HttpResponseException(HttpStatusCode.Unauthorized); 

लेकिन एप्लिकेशन संकलन नहीं होगा के रूप में यह निम्न त्रुटि फेंकता है:

The best overloaded method match for 'System.Web.Http.HttpResponseException.HttpResponseException(System.Net.Http.HttpResponseMessage)' has some invalid arguments 

एमएसडीएन पर प्रलेखन का कहना है कि इसमें एक निर्माता है जो HttpResponseMessage enum स्वीकार करता है। http://msdn.microsoft.com/en-us/library/hh835324%28v=vs.108%29.aspx

मुझे क्या याद आ रही है?

धन्यवाद

+1

क्या आप अपना वास्तविक कोड भी पोस्ट कर सकते हैं? –

+0

निश्चित रूप से। मैंने पोस्ट अपडेट किया है। – hofnarwillie

+0

जब आप HttpResponseException बनाते हैं और दाहिने पैर को दबाते हैं, तो क्या आप दो रचनाकारों को दस्तावेज़ दिखाने के रूप में देखते हैं या सिर्फ एक? यदि सिर्फ एक है, तो आप एक HttpResponseMessage तक सीमित हैं .... या .... आप ढांचे के एक संस्करण का उपयोग कर रहे हैं जो दस्तावेज़ीकरण से अलग है। –

उत्तर

11

यदि आप आरसी का उपयोग कर रहे हैं, तो यह बदल गया है। प्रयास करें:

throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized)); 
+0

धन्यवाद! बहुत सराहना की। – hofnarwillie

+0

और यदि मुझे क्लाइंट को कुछ संदेश भेजने की आवश्यकता है? – Zote

+4

@Zote - एक HttpResponseMessage चर बनाएँ, सामग्री गुण सेट करें, फिर HttpResponseException में प्रवेश करें। या यदि आप वास्तव में फैंसी प्राप्त करना चाहते हैं, तो मैंने एक पोस्ट लिखा है [एक कस्टम त्रुटि प्रकार लौटा रहा है] (http://smlync.tumblr.com/post/23104849655/returning-custom-error-data-type-in- एएसपी निवल वेब एपीआई)। – smlync

6

सिर्फ अपने आप को इस समस्या में पड़ के बाद, मैं smlync द्वारा प्रदान की जवाब देखने के लिए खुश हूँ, हालांकि, इसके इस मामले में एपीआई को देखने के लिए निराशाजनक अधिक से अधिक शब्दाडंबर में बदल गया है! IMHO, वर्णन 'राक्षसी', की ओर निम्नलिखित leans विशेष रूप से जब यह अपवाद (सब से ऊपर) पर हर नियंत्रक कई बार भर जाता है:

throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)); 

मैं बजाय इस का उपयोग कर किया जा सकता है, शायद आप में से कुछ के रूप में उपयोगी पाते हैं अच्छी तरह से:

throw new Http404NotFoundException(); 

रखा निम्नलिखित जहाँ आप चाहते हैं के साथ:

public class Http404NotFoundException : HttpResponseException 
{ 
    public Http404NotFoundException() 
     : base(new HttpResponseMessage(HttpStatusCode.NotFound)) { } 
} 

इस, प्यारी ASP.NET WebAPI टीम क्लीनर होना नहीं चाहेंगे? अगर केवल इस स्थिति कोड के लिए, हालांकि शायद कुछ अन्य सामान्य स्थिति कोड समकक्षों में फेंक दें।

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