在ASP.NET MVC2中将http 204“无内容”返回给客户端

时间:2010-12-22 20:50:22

标签: asp.net-mvc-2 httpresponse

在我所拥有的ASP.net MVC 2应用程序中,我想要对post操作返回204 No Content响应。当前我的控制器方法有一个void返回类型,但这会将客户端的响应发送回200 OK,并将Content-Length标头设置为0.如何将响应转换为204?

[HttpPost]
public void DoSomething(string param)
{
    // do some operation with param

    // now I wish to return a 204 no content response to the user 
    // instead of the 200 OK response
}

4 个答案:

答案 0 :(得分:34)

在MVC3中有一个HttpStatusCodeResult class。你可以为MVC2应用程序自己动手:

public class HttpStatusCodeResult : ActionResult
{
    private readonly int code;
    public HttpStatusCodeResult(int code)
    {
        this.code = code;
    }

    public override void ExecuteResult(System.Web.Mvc.ControllerContext context)
    {
        context.HttpContext.Response.StatusCode = code;
    }
}

你必须改变你的控制器方法:

[HttpPost]
public ActionResult DoSomething(string param)
{
    // do some operation with param

    // now I wish to return a 204 no content response to the user 
    // instead of the 200 OK response
    return new HttpStatusCodeResult(HttpStatusCode.NoContent);
}

答案 1 :(得分:1)

在ASP.NET Core 2中,您可以使用NoContent

[HttpPost("Update")]
public async Task<IActionResult> DoSomething(object parameters)
{
    return NoContent();
}

答案 2 :(得分:0)

仅供参考,我正在使用您的方法,它正在返回204 No Content(只是返回空白),我认为您还有其他问题

[HttpPost]
public void SetInterests(int userid, [FromBody] JObject bodyParams)
{
     ....
     .....

    //returning nothing
}

答案 3 :(得分:0)

您可以简单地返回IHttpActionResult并使用StatusCode

public IHttpActionResult DoSomething()
{
    //do something

    return StatusCode(System.Net.HttpStatusCode.NoContent);        
}