ASP.NET Core WebApi HttpResponseMessage 创建自定义消息?

Posted

技术标签:

【中文标题】ASP.NET Core WebApi HttpResponseMessage 创建自定义消息?【英文标题】:ASP.NET Core WebApi HttpResponseMessage create custom message? 【发布时间】:2017-06-18 22:09:36 【问题描述】:

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

new HttpResponseMessage()

    StatusCode=HttpStatusCode.OK,
    Message="Congratulations !!"
;

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

【问题讨论】:

相关帖子 - Convert from HttpResponseMessage to IActionResult in .NET Core 【参考方案1】:

这个最简单的方法是使用基本 Controller 类中的帮助器。

public ActionResult ExampleNotFound()

    return NotFound("Sorry !!");            


public ActionResult ExampleOk()

    return Ok("Congratulations !!");

您也可以返回一个新的ContentResult 并设置它的状态码。

return new ContentResult
     
         Content = "Congratulations !!",
         ContentType = "text/plain",
         StatusCode = 200
     ;

这两种方法略有不同,ContentResult 总是有一个ContentTypetext/plain

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

【讨论】:

您好,相信他要求的 HttpResponseMessage 与 ActionResult 非常不同,ActionResult 用于 MVC 应用程序,而另一个用于 Web API。 @jersoft MVC 和 WebAPI 在 ASP.Net 核心中合并。【参考方案2】:

为了返回旧版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);
    

【讨论】:

【参考方案3】:

您可以使用StatusCode 而不是CreateResponseStatusCode 在命名空间 Microsoft.AspNetCore.Mvc 中。

public virtual ObjectResult StatusCode([ActionResultStatusCode] int statusCode, [ActionResultObjectValue] object value);

下面是语法。

return StatusCode(Convert.ToInt32(returnstatus.StatusCode), senderResponse);

方法的返回类型将是IActionResult

【讨论】:

以上是关于ASP.NET Core WebApi HttpResponseMessage 创建自定义消息?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 2.2 WebAPI 405 方法不允许

带你做 WebAPI 迁移 ASP.NET Core 2.0

ASP.NET Core WebApi返回结果统一包装实践

ASP.NET Core - 从 WebApi 提供静态内容 [重复]

ASP.Net Core WebApi几种版本控制对比

获取 ASP .Net Core WebAPI 中的所有身份角色