2013-02-19 27 views
36

पर प्रतिक्रिया स्थिति कोड सेट करें Asp.net वेब एपीआई में, मैं int या स्ट्रिंग का उपयोग करके मेरी प्रतिक्रिया का स्टेटस कोड कैसे सेट करूं, न कि स्टेटसकोड एनम?Asp.net वेब एपीआई

मेरे मामले में, मैं स्टेटस कोड 422, "अप्राप्य इकाई" के साथ सत्यापन त्रुटियों को वापस करना चाहता हूं, लेकिन इसके लिए कोई गणक नहीं है।

HttpResponseMessage response = Request.CreateResponse(); 
response.StatusCode = HttpStatusCode.UnprocessableEntity; //error, not in enum 

उत्तर

39

आप किसी भी int को HttpStatusCode में डाल सकते हैं।

response.StatusCode = (HttpStatusCode)422; 

तुम भी कर सकते हैं:

HttpResponseMessage response = Request.CreateResponse((HttpStatusCode)422, "Unprocessable Entity"); 
+0

धन्यवाद! वास्तव में मुझे क्या चाहिए! आपके दूसरे उदाहरण में, दूसरा पैरामीटर प्रतिक्रिया की सामग्री के लिए है। "अप्राप्य संस्था" पास करना थोड़ा अनावश्यक हो सकता है। उदाहरण के लिए, मैं यह कर रहा हूं: Request.CreateResponse ((HttpStatusCode) 422, सत्यापन त्रुटि); –

+0

ये, वह है! दूसरा पैरामीटर कुछ भी हो सकता है। =) – lolol

+2

एक्सटेंशन विधि CreateResponse नामस्थान "System.Net.Http" में पाया जा सकता है। –

10

मैं इस के लिए एक वर्ग बना दी:

public class HttpStatusCodeAdditions 
    { 
     public const int UnprocessableEntityCode = 422; 
     public static HttpStatusCodeAdditions UnprocessableEntity = new HttpStatusCodeAdditions(UnprocessableEntityCode); 

     private HttpStatusCodeAdditions(int code) 
     { 
      Code = code; 
     } 
     public int Code { get; private set; } 

     public static implicit operator HttpStatusCode(HttpStatusCodeAdditions addition) 
     { 
      return (HttpStatusCode)addition.Code; 
     } 
    } 

जो इस तरह इस्तेमाल किया जा सकता:

response.StatusCode = HttpStatusCodeAdditions.UnprocessableEntity; 
+0

अच्छा और साफ, मुझे यह पसंद है! – NinjaCross

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

  • कोई संबंधित समस्या नहीं^_^