wake-up-neo.net

Wie kann ich einen bestimmten Statuscode und keinen Inhalt vom Controller zurückgeben?

Ich möchte, dass die Beispielsteuerung unten einen Statuscode 418 ohne Inhalt zurückgibt. Das Einstellen des Statuscodes ist einfach genug, aber es scheint etwas zu tun zu sein, um das Ende der Anfrage zu signalisieren. In MVC vor ASP.NET Core oder in WebForms könnte dies ein Aufruf an Response.End() sein, aber wie funktioniert es in ASP.NET Core, wo Response.End nicht vorhanden ist?

public class ExampleController : Controller
{
    [HttpGet][Route("/example/main")]
    public IActionResult Main()
    {
        this.HttpContext.Response.StatusCode = 418; // I'm a teapot
        // How to end the request?
        // I don't actually want to return a view but perhaps the next
        // line is required anyway?
        return View();   
    }
}
79
Ron C

this.HttpContext.Response.StatusCode = 418; // I'm a teapot

Wie beendet man die Anfrage?

Versuchen Sie es mit einer anderen Lösung:

return StatusCode(418);


Sie können StatusCode(???) verwenden, um einen beliebigen HTTP-Statuscode zurückzugeben.


Sie können auch dedizierte Ergebnisse verwenden:

Erfolg:

  • return Ok() ← HTTP-Statuscode 200
  • return Created() ← HTTP-Statuscode 201
  • return NoContent(); ← HTTP-Statuscode 204

Clientfehler:

  • return BadRequest(); ← HTTP-Statuscode 400
  • return Unauthorized(); ← HTTP-Statuscode 401
  • return NotFound(); ← HTTP-Statuscode 404


Mehr Details:

179
Lukasz Makowej

Wenn jemand dies mit einem IHttpActionResult tun möchte, der sich möglicherweise in einem Web-API-Projekt befindet, kann Folgendes hilfreich sein.

// GET: api/Default/
public IHttpActionResult Get()
{
    //return Ok();//200
    //return StatusCode(HttpStatusCode.Accepted);//202
    //return BadRequest();//400
    //return InternalServerError();//500
    //return Unauthorized();//401
    return Ok();
}
1
PAVITRA

Dieser Code funktioniert möglicherweise für Nicht-.NET-MVC-Controller:

this.HttpContext.Response.StatusCode = 418; // I'm a teapot
return Json(new { status = "mer" }, JsonRequestBehavior.AllowGet);
0
sobelito