C# ASP.NET核心WebApi HttpResponseMessage是否创建自定义消息?

C# ASP.NET核心WebApi HttpResponseMessage是否创建自定义消息?,c#,rest,asp.net-web-api,asp.net-core,C#,Rest,Asp.net Web Api,Asp.net Core,如何在ASP.NET Core WebApi中创建自定义消息? 例如,我想返回 new HttpResponseMessage() { StatusCode=HttpStatusCode.OK, Message="Congratulations !!" }; new HttpResponseMessage() { StatusCode=HttpStatusCode.NotFound, Message="Sorry !!" }; 这个最简单的方法是使用基本控制

如何在ASP.NET Core WebApi中创建自定义消息? 例如,我想返回

new HttpResponseMessage()
{
    StatusCode=HttpStatusCode.OK,
    Message="Congratulations !!"
};

new HttpResponseMessage()
{ 
    StatusCode=HttpStatusCode.NotFound,
    Message="Sorry !!"
};

这个最简单的方法是使用基本控制器类中的帮助程序

public ActionResult ExampleNotFound()
{
    return NotFound("Sorry !!");            
}

public ActionResult ExampleOk()
{
    return Ok("Congratulations !!");
}
或者,您可以返回新的
ContentResult
,并设置其状态代码

return new ContentResult
     {
         Content = "Congratulations !!",
         ContentType = "text/plain",
         StatusCode = 200
     };
这两种方法略有不同,
ContentResult
将始终具有
ContentType
text/plain


Ok()
NotFound()
方法返回一个
ObjectResult
,它使用格式化程序根据请求的Accept标头中的内容类型序列化字符串。

为了返回遗留的
HttpResponseMessage
,您需要在.net core中将其转换为
ResponseMessageResult
。下面是一个例子

    public async Task<IActionResult> Get(Guid id)
    {
        var responseMessage = HttpContext.GetHttpRequestMessage().CreateResponse(HttpStatusCode.OK,
            new YourObject()
            {
                Id = Id,
                Name = Name
            });

        return new ResponseMessageResult(responseMessage);
    }
公共异步任务获取(Guid id)
{
var responseMessage=HttpContext.GetHttpRequestMessage().CreateSponse(HttpStatusCode.OK,
新对象()
{
Id=Id,
Name=Name
});
返回新的ResponseMessageResult(responseMessage);
}

我相信他要求的HttpResponseMessage与ActionResult非常不同,ActionResult用于MVC应用程序,而另一个用于Web API。@jersoft MVC和WebAPI合并在ASP.Net core中。