Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to return Custom HTTP Status code + message in IEnumerable<xxx.Models.xxx> function

public IEnumerable<xxx.Models.Product> ReviewAll(string para1, string para2, string para3, int para4)
{
    return //HTTPStatusCode
}

Currently I'm using this

int HTTPResponse=400;
return Request.CreateResponse((HttpStatusCode)HTTPResponse, "InvalidID");

But this returns an error saying

Cannot implicitly convert type 'System.Net.Http.HttpResponseMessage' to 'System.Collections.Generic.IEnumerable'. An explicit conversion exists (are you missing a cast?)

How to fix this ??

like image 502
Harsha W Avatar asked Oct 18 '22 20:10

Harsha W


1 Answers

Refactor action to return HttpResponseMessage

public HttpResponseMessage ReviewAll(string para1, string para2, string para3, int para4) {
    if(some_condition) {
        //...code removed for brevity

        //if request is invalid then return appropriate status response
        int HTTPResponse = 400;
        var response = Request.CreateResponse((HttpStatusCode)HTTPResponse);
        response.ReasonPhrase = "InvalidID";
        return response;
    } else {
        //If the data is valid I need to return the data segment,
        IEnumerable<xxx.Models.Product> responseBody = //...code removed for brevity
        return Request.CreateResponse(HttpStatusCode.Ok, responseBody);//include data with an HttpStatus.Ok (200) response
    }
}
like image 66
Nkosi Avatar answered Nov 01 '22 13:11

Nkosi