【问题标题】:ASP.NET service send JSON responseASP.NET 服务发送 JSON 响应
【发布时间】:2017-09-16 10:13:28
【问题描述】:

我正在尝试让我的服务发送一个 JSON 响应以及一个状态码,但我不确定该怎么做。例如,作为对 POST 请求的响应,我想发送 201 Created 响应。到目前为止,我所拥有的就是这个。

EmployeeApiController.cs

[RoutePrefix("api/employee")]
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class EmployeeApiController : ApiController
{

    readonly EmployeePersistence persistence;


    public EmployeeApiController()
    {
        persistence = new EmployeePersistence();
    }

    [HttpPost]
    [Route("")]
    public HttpResponseMessage Post([FromBody]EmployeeDto employee)
    {
        long id = persistence.SaveEmployee(employee);

        // create http response
        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created);
        response.Headers.Location = new Uri(Request.RequestUri, String.Format("/api/employee/{0}", id));

        return response;
    }

现在返回 text/html 而不是 JSON。我尝试将返回类型更改为IHttpActionResult,然后更改为return Json(response),但这没有用。应该怎么做?

【问题讨论】:

  • 为什么你的set route("")可以去掉

标签: c# asp.net json http


【解决方案1】:

将[Produces("application/json")] 添加到您的班级装饰中

[Produces("application/json")]
[RoutePrefix("api/employee")]
[EnableCors(origins: "*", headers: "*", methods: "*")]

然后像这样改变你的控制器方法

[HttpPost]
public IActionResult Post([FromBody]EmployeeDto employee)
{
    long id = persistence.SaveEmployee(employee);
    return Created('employee',new {id = id});
}

这应该可以解决问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多