Quero que o controlador de exemplo abaixo retorne um código de status 418 sem conteúdo. Definir o código de status é fácil, mas parece que algo precisa ser feito para sinalizar o fim da solicitação. No MVC anterior ao ASP.NET Core ou em WebForms isso pode ser uma chamada para, Response.End()
mas como funciona no ASP.NET Core onde Response.End
não existe?
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
Funcionalidade ausente aqui, Microsoft.NoContent();
que retorna o código de erro 204 do http.StatusCodes
doMicrosoft.AspNetCore.Http
namespace ( github.com/aspnet/HttpAbstractions/blob/dev/src/… ).StatusCode(StatusCodes.Status412PreconditionFailed);
Este código pode funcionar para controladores não .NET Core MVC:
fonte
Se alguém quiser fazer isso com um
IHttpActionResult
pode estar em um projeto de API da Web, abaixo pode ser útil.fonte
Observe como os resultados do objeto atual são criados. Aqui está o BadRequestObjectResult. Apenas uma extensão do ObjectResult com um valor e StatusCode.
https://github.com/aspnet/Mvc/blob/master/src/Microsoft.AspNetCore.Mvc.Core/BadRequestObjectResult.cs
Criei um TimeoutExceptionObjectResult da mesma forma para 408.
Cliente:
fonte
A melhor maneira de fazer isso é:
'StatusCodes' tem todos os tipos de status de retorno e você pode ver todos eles neste link https://httpstatuses.com/
Depois de escolher seu StatusCode, retorne-o com uma mensagem.
fonte