Saya ingin contoh pengontrol di bawah ini mengembalikan kode status 418 tanpa konten. Menetapkan kode status cukup mudah tetapi kemudian sepertinya ada sesuatu yang perlu dilakukan untuk memberi tanda akhir permintaan. Di MVC sebelum ASP.NET Core atau di WebForms yang mungkin menjadi panggilan Response.End()
tetapi bagaimana cara kerjanya di ASP.NET Core di mana Response.End
tidak ada?
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
Fungsi serius yang hilang di sini, Microsoft.NoContent();
yang mengembalikan kode kesalahan http 204.StatusCodes
dariMicrosoft.AspNetCore.Http
namespace ( github.com/aspnet/HttpAbstractions/blob/dev/src/… ).StatusCode(StatusCodes.Status412PreconditionFailed);
Kode ini mungkin berfungsi untuk pengontrol non-.NET Core MVC:
sumber
Jika ada yang ingin melakukan ini dengan
IHttpActionResult
mungkin dalam proyek API Web, Di bawah ini mungkin bisa membantu.sumber
Lihatlah bagaimana Hasil Objek saat ini dibuat. Ini adalah BadRequestObjectResult. Hanya perpanjangan dari ObjectResult dengan nilai dan StatusCode.
https://github.com/aspnet/Mvc/blob/master/src/Microsoft.AspNetCore.Mvc.Core/BadRequestObjectResult.cs
Saya membuat TimeoutExceptionObjectResult dengan cara yang sama untuk 408.
Klien:
sumber
Cara terbaik untuk melakukannya adalah:
'StatusCodes' memiliki setiap jenis status pengembalian dan Anda dapat melihat semuanya di tautan ini https://httpstatuses.com/
Setelah Anda memilih Kode Status, kembalikan dengan pesan.
sumber