2013-11-20 6 views
7

इस वेब एपीआई कार्रवाई एक HTTP 500 (आंतरिक सर्वर त्रुटि) स्थिति कोड लौटाने:वेब एपीआई 2 - ApiController.InternalServerError() रिटर्न HTTP 400 स्थिति कोड

public IHttpActionResult Post() 
{ 
    return InternalServerError(); 
} 

लेकिन इस कार्रवाई एक HTTP 400 (ख़राब अनुरोध रिटर्न) स्थिति कोड:

public IHttpActionResult Post() 
{ 
    return InternalServerError(new Exception()); 
} 

मैं दोनों कार्य एक 500 स्थिति कोड और दूसरी कार्रवाई वापस जाने के लिए उम्मीद करेंगे प्रतिक्रिया शरीर में त्रुटि के विवरण में से कुछ डालता है।

मेरा पहला विचार यह है कि यह एक बग है लेकिन मैं कुछ अन्य इनपुट प्राप्त करना चाहता था। क्या कोई अच्छा कारण है कि 500 ​​की बजाय दूसरी कार्रवाई में 400 को वापस क्यों किया जाना चाहिए?

अद्यतन:

इस पद्धति पर प्रलेखन पढ़ता है:

निर्दिष्ट अपवाद के साथ एक System.Web.Http.Results.ExceptionResult (500 आंतरिक सर्वर त्रुटि) बनाता है।

मैं सोच रहा हूं कि यह एक और बग है।

+0

को इससे संबंधित कोई समस्या नहीं है, तो आप http://aspnetwebstack.codeplex.com/workitem/list/basic – Fals

उत्तर

12

ठीक है, यह एक ज्ञात समस्या है जो वेब एपीआई 2 रिलीज होने के बाद तय किया गया था था ... आप निम्नलिखित तरीके का उपयोग कर सकते हैं इस issue..example ठीक करने के लिए:

return new ResponseMessageResult(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, invalidOpException)); 

के बाद मुद्दा यह है कि लॉग इन किया था पहले:
https://aspnetwebstack.codeplex.com/workitem/1318

+0

कूल, इस बात की पुष्टि के लिए धन्यवाद में एक खोल देना चाहिए। – jebar8

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