Как вернуть код состояния HTTP 200 из ASP.NET контроллер MVC 3



Я пишу приложение, которое принимает данные от сторонних поставщиков.



когда эти данные будут опубликованы, я должен вернуть код состояния HTTP 200.



Как я могу сделать это от моего контроллера?

559   5  

5 ответов:

в вашем контроллере вы бы вернули 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
}

200 - это обычный HTTP-заголовок для успешного запроса. Если это все вам нужно, просто есть контроллер return new EmptyResult();

вы можете просто установить код состояния ответа на 200, как показано ниже

public ActionResult SomeMethod(parameters...)
{
   //others code here
   ...      
   Response.StatusCode = 200;
   return YourObject;  
}
    [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 });
        }
    }

способ сделать это в .NET Core (на момент написания) следующим образом:

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

    return StatusCode(400);
}

The 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

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

Comments

    Ничего не найдено.