2012-08-31 13 views
5

में HttpContext.Current का उपयोग करना मैं एक वेबएपीआई एक्शन विधि में अपवादों से निपटना चाहता हूं, उन्हें स्थिति कोड सेट करके, और प्रतिक्रिया के लिए एक संदेश लिखकर। आम तौर पर एक सामान्य MVC Controller में मैं बहुत की तरह इस करना होगा, का उपयोग कर Controller के Response संपत्ति:एएसपी.नेट वेबएपीआई

Response.StatusCode = 404; 
Response.Write("Whatever"); 

हालांकि यह ApiController लगता है किसी भी Response संपत्ति नहीं है। क्या इसका कोई कारण है? क्या यह ठीक है HttpContext.Current.Response का उपयोग करना ठीक है :?

HttpContext.Current.Response.StatusCode = 404; 
HttpContext.Current.Response.Write("Whatever"); 

या क्या वेबएपीआई नियंत्रक से प्रतिक्रिया के लिए लिखने का एक विशिष्ट तरीका है ??

उत्तर

7

क्रिया विधि प्रतिक्रिया वस्तु बनाने के लिए माना जाता है। या तो बस नया HttpResponseMessage करें या इसे कॉल करें। क्रिएट रिस्पॉन्स।

, तो इसके बजाय HttpResponseMessage लौटने की आप एक कस्टम CLR वस्तु तो वापस करना चाहते आप आप एक संदेश है कि अपने अपवाद का वर्णन करता है बनाना चाहते हैं एक 404.

+0

चियर्स मैं इसे – jcvandan

+1

पर ध्यान देंगे @ डॉर्मिशर बस जोड़ने के लिए, HttpContext का उपयोग न करने का प्रयास करें क्योंकि यह आपको आईआईएस के अलावा किसी अन्य होस्ट का उपयोग करने में सक्षम होने से रोक देगा। –

+0

अरे आदमी - अभी भी इसके साथ कुछ परेशानी है, जब मैं एक HttpResponseException फेंक देता हूं, प्रतिक्रिया बस एक खाली 200 है - कोई विचार यह क्यों है? मैंने इस कॉन्फ़िगरेशन वैल्यू को सेट करने के लिए एक और एसओ जवाब देखा: - लेकिन कोई बदलाव नहीं – jcvandan

0

वापस जाने के लिए एक HTTPResponseException फेंक करने की आवश्यकता होगी, आपका सर्वश्रेष्ठ दांव Request.CreateErrorResponse पर कॉल करना है, और उपलब्ध कई ओवरलोड का उपयोग करें। आपके वेब.कॉन्फिग में कस्टमरर चालू होने पर, या आप DEBUG मोड में हैं या नहीं, इस पर निर्भर करते हुए प्रतिक्रिया कैसे स्वरूपित होती है, इस बारे में चेतावनी दी जाती है। आप वास्तव में इस व्यवहार को प्रोग्रामिक रूप से कॉन्फ़िगर कर सकते हैं, HttpConfiguration.IncludeErrorDetailPolicy प्रॉपर्टी का उपयोग कर। यहाँ भी देखें: http://weblogs.asp.net/cibrax/archive/2013/03/01/asp-net-web-api-logging-and-troubleshooting.aspx

आप गहराई में एक के लिए यह लेख पढ़ सकते हैं अप लिखते हैं, और कुछ विकल्प आप सटीक समस्या आप का वर्णन हल करने के लिए: उस के लिए Web API, HttpError and the behavior of Exceptions – ‘An error has occurred’

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