Ich möchte, dass die folgende Beispielsteuerung einen Statuscode 418 ohne Inhalt zurückgibt. Das Einstellen des Statuscodes ist einfach genug, aber dann scheint es, dass etwas getan werden muss, um das Ende der Anforderung zu signalisieren. In MVC vor ASP.NET Core oder in WebForms könnte dies ein Aufruf sein, Response.End()
aber wie funktioniert es in ASP.NET Core, wo Response.End
es 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();
}
}
there is no dedicated result for 418
Schwerwiegende fehlende Funktionalität hier, Microsoft.NoContent();
dass http Fehlercode 204 zurückgibt.StatusCodes
vonMicrosoft.AspNetCore.Http
Namensraum ( github.com/aspnet/HttpAbstractions/blob/dev/src/... ).StatusCode(StatusCodes.Status412PreconditionFailed);
Wenn jemand dies mit einem
IHttpActionResult
möglicherweise in einem Web-API-Projekt tun möchte, kann das Folgende hilfreich sein.quelle
Dieser Code funktioniert möglicherweise für Nicht-.NET Core MVC-Controller:
quelle
Sehen Sie sich an, wie die aktuellen Objektergebnisse erstellt werden. Hier ist das BadRequestObjectResult. Nur eine Erweiterung des ObjectResult mit einem Wert und StatusCode.
https://github.com/aspnet/Mvc/blob/master/src/Microsoft.AspNetCore.Mvc.Core/BadRequestObjectResult.cs
Ich habe ein TimeoutExceptionObjectResult genauso für 408 erstellt.
Klient:
quelle
Der beste Weg, dies zu tun, ist:
'StatusCodes' hat jede Art von Rückgabestatus und Sie können alle unter diesem Link sehen https://httpstatuses.com/
Wenn Sie Ihren StatusCode ausgewählt haben, senden Sie ihn mit einer Nachricht zurück.
quelle