我正在使用ASP.NET Web API 2,我想从我的API返回一个错误代码为404的JSON结果。
我试着模仿this result:
{
"message": "Not Found",
"documentation_url": "https://docs.github.com/rest/reference/users#get-a-user"
}
这就是我所尝试的:
[RoutePrefix("error")]
public class ErrorController : ShoplessBaseApiController
{
[HttpGet]
[Route("notfound")]
public IHttpActionResult NotFoundMessage()
{
return MyNotFound(new { Message = "Not douns", DocumentationUrl = "My documentation path" });
}
protected IHttpActionResult MyNotFound<T>(T t)
{
return Content(HttpStatusCode.NotFound, JsonConvert.SerializeObject(t));
}
}
上面的返回一个序列化的json,但问题是内容类型不是json。
我想返回这样的东西:
[HttpGet]
[Route("notfound")]
public IHttpActionResult NotFoundMessage()
{
return Json(new { Message = "Not found", DocumentationUrl = "My documentation path" });
}
但问题是,Json不接受状态码并返回200
1条答案
按热度按时间nqwrtyyt1#
在ASP.NET WebAPI的情况下,您可以使用
Content
。Content
的第一个参数是状态码,第二个是字符串(已经序列化的响应体)请记住,在较新的ASP.NET版本中,
Content
没有可以接受StatusCode
的重载。在这种情况下,您可以将NotFound
与任何对象一起使用,ASP.NET将代表您对其进行序列化。更新#1
我忽略了您声明没有设置内容类型的部分。