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
总是有一个ContentType
的text/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
而不是CreateResponse
。
StatusCode
在命名空间 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