2016-02-09 8 views
6

मैं C# WebApi 2 webservice कोडिंग कर रहा हूं, और IQueryable<T> webservice फ़ंक्शन से HttpStatusCode लौटने के संबंध में मेरा कोई प्रश्न है।मैं एक IQueryable <T> से एक HttpStatusCode कैसे वापस कर सकता हूं?

एक वेब सेवा समारोह एक वस्तु देता है, तो निम्नलिखित आसानी से इस्तेमाल किया जा सकता:

public IQueryable<T> GetItems() 
{ 
    return Content(HttpStatusCode.Unauthorized, "Any object"); 
} 
:

public async Task<IHttpActionResult> GetItem(int id) 
{ 
    return Content(HttpStatusCode.Unauthorized, "Any object"); 
} 

निम्नलिखित स्थिति में, मैं कैसे एक निर्दिष्ट HttpStatusCode वापस जाने के लिए पर यकीन नहीं है

क्या मुझे इसके साथ कुछ मदद मिल सकती है?

उत्तर

5

आप उचित statusCode

public IQueryable<T> GetItems() 
{ 
    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized) { Content = new StringContent("Any object") }); 
} 
0

पहली स्थिति में, आप अभी भी Content विधि में वस्तु लौट जा रहे हैं, उदाहरण के लिए के साथ एक HttpResponseException फेंक कर सकते हैं:

public IHttpActionResult GetItem(int id) 
{ 
    return Content(HttpStatusCode.Unauthorized, "Any object"); 
} 

जब आप उस विधि को निष्पादित करते हैं, तो आप "Any object" क्लाइंट में लौट आएंगे। वेब एपीआई 2 IHttpActionResult में HttpResponseMessage के आसपास अनिवार्य रूप से फैंसी फैक्ट्री है। आप की अनदेखी कि विधि की वापसी प्रकार IHttpActionResult है, तो आप queryable के साथ "किसी भी वस्तु" की जगह एक IQueryable लौट सकते हैं, जैसे:

public IHttpActionResult GetItem(int id) 
{ 
    IQueryable<object> results; 
    return Ok(results); 
} 

कुछ और वेब एपीआई में कार्रवाई के परिणाम के बारे में जानकारी यहां पाया जा सकता :

http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/action-results

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