C# 如何返回自定义HTTP状态代码+;IEnumerable中的消息<;xxx.型号xxx>;功能

C# 如何返回自定义HTTP状态代码+;IEnumerable中的消息<;xxx.型号xxx>;功能,c#,asp.net,asp.net-web-api,http-status-code-404,C#,Asp.net,Asp.net Web Api,Http Status Code 404,但这会返回一个错误,即 无法隐式转换类型“System.Net.Http.HttpResponseMessage” 至“System.Collections.Generic.IEnumerable”。一 存在显式转换(是否缺少强制转换?) 如何修复此问题???重构操作以返回HttpResponseMessage int HTTPResponse=400; return Request.CreateResponse((HttpStatusCode)HTTPResponse, "InvalidID"

但这会返回一个错误,即

无法隐式转换类型“System.Net.Http.HttpResponseMessage” 至“System.Collections.Generic.IEnumerable”。一 存在显式转换(是否缺少强制转换?)


如何修复此问题???

重构操作以返回
HttpResponseMessage

int HTTPResponse=400;
return Request.CreateResponse((HttpStatusCode)HTTPResponse, "InvalidID");
公共httpresponsemessagereviewall(字符串para1、字符串para2、字符串para3、int para4){
如果(某些条件){
//…为简洁起见,删除了代码
//如果请求无效,则返回相应的状态响应
int-HTTPResponse=400;
var response=Request.CreateResponse((HttpStatusCode)HTTPResponse);
response.ReasonPhrase=“InvalidID”;
返回响应;
}否则{
//如果数据有效,我需要返回数据段,
IEnumerable responseBody=/…为简洁起见,删除了代码
return Request.CreateResponse(HttpStatusCode.Ok,responseBody);//包含带有HttpStatus.Ok(200)响应的数据
}
}

No Nkosi。我无法重构操作以返回HttpResponseMessage,因为我在函数中使用了“产品”模型。没有其他方法可以解决这个问题吗?在函数中使用什么并不重要。框架将从响应体获取模型并将其返回给调用方,这就是我在else语句中所做的。通过这种方式,您可以灵活地随响应返回正确的状态代码。此函数不仅返回HTTP响应,还返回数据。如果条件为true,则需要返回基于xxx.Models.Product type的数据,如果条件为false,则返回HTTP响应。:-)我根据提供的信息为您提供了解决方案,但您表示该解决方案不正确。您的想法太多了。数据将在响应的主体中返回。仔细看答案。事实上,我认为您需要重新阅读有关动作和控制器的内容,以便您能够理解我之前向您解释的内容。现在我再也帮不了你了。
int HTTPResponse=400;
return Request.CreateResponse((HttpStatusCode)HTTPResponse, "InvalidID");
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
    }
}