如何从ASP.NET MVC 3控制器返回200 HTTP状态代码

时间:2011-02-22 00:23:33

标签: asp.net-mvc

我正在编写一个接受来自第三方服务的POST数据的应用程序。

当此数据被POST时,我必须返回200 HTTP状态代码。

如何从我的控制器执行此操作?

5 个答案:

答案 0 :(得分:357)

在你的控制器中,你会返回一个像这样的HttpStatusCodeResult ......

[HttpPost]
public ActionResult SomeMethod(...your method parameters go here...)
{
   // todo: put your processing code here

   //If not using MVC5
   return new HttpStatusCodeResult(200);

   //If using MVC5
   return new HttpStatusCodeResult(HttpStatusCode.OK);  // OK = 200
}

答案 1 :(得分:49)

200只是成功请求的正常HTTP标头。如果您需要所有,只需拥有控制器return new EmptyResult();

答案 2 :(得分:38)

您可以简单地将响应的状态代码设置为200,如下所示

public ActionResult SomeMethod(parameters...)
{
   //others code here
   ...      
   Response.StatusCode = 200;
   return YourObject;  
}

答案 3 :(得分:18)

    [HttpPost]
    public JsonResult ContactAdd(ContactViewModel contactViewModel)
    {
        if (ModelState.IsValid)
        {
            var job = new Job { Contact = new Contact() };

            Mapper.Map(contactViewModel, job);
            Mapper.Map(contactViewModel, job.Contact);

            _db.Jobs.Add(job);

            _db.SaveChanges();

            //you do not even need this line of code,200 is the default for ASP.NET MVC as long as no exceptions were thrown
            //Response.StatusCode = (int)HttpStatusCode.OK;

            return Json(new { jobId = job.JobId });
        }
        else
        {
            Response.StatusCode = (int)HttpStatusCode.BadRequest;
            return Json(new { jobId = -1 });
        }
    }

答案 4 :(得分:3)

(在撰写本文时)在.NET Core中执行此操作的方法如下:

public async Task<IActionResult> YourAction(YourModel model)
{
    if (ModelState.IsValid)
    {
        return StatusCode(200);
    }

    return StatusCode(400);
}

StatusCode 方法返回一种 StatusCodeResult 类型,该类型实现了 IActionResult ,因此可以用作操作的返回类型。

作为重构,您可以通过使用HTTP状态代码枚举的转换来提高可读性,例如:

return StatusCode((int)HttpStatusCode.OK);

此外,您还可以使用一些内置结果类型。例如:

return Ok(); // returns a 200
return BadRequest(ModelState); // returns a 400 with the ModelState as JSON

参考StatusCodeResult-https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.statuscoderesult?view=aspnetcore-2.1