首页 > 解决方案 > 如何在 ASP.NET Core Web API 中发送带有错误 http 响应的正文?

问题描述

我正在将 ASP.NET Web API 项目转换为 ASP.NET Core WEB API。之前,我们会像这样返回错误响应:

throw new HttpResponseException(ErrorResponses.CreateErrorResponse(HttpStatusCode.Conflict, "Too many linked devices", new { status = (int)SignInStatus.TooManyLinkedDevices }));

请注意我们如何设置 http 状态代码、错误消息和响应正文。在核心中,我可以这样做:

return Conflict("Too many linked devices");

但是,我没有看到设置响应正文的方法。实现这一目标的正确技术是什么?

标签: asp.net-web-apiasp.net-coreasp.net-core-webapi

解决方案


我不确定“旧”代码中的每个参数到底对应什么,但只有一个响应主体,因此从逻辑上讲,不可能同时返回“链接设备太多”字符串和对象。字符串或对象实际上并未在响应正文中返回。

也就是说,您的响应主体Conflict是您当前传递给它的参数。这可以是一个对象(字符串是一个对象)或一个ModelStateDictionary(即ModelState)。您可能需要执行以下操作:

return Conflict(new {
    message = "Too many linked devices",
    status = (int)SignInStatus.TooManyLinkedDevices
})

推荐阅读