visual studio new net mvc libro español asp and c# asp.net-web-api httpresponse

c# - studio - Cómo crear un mensaje de respuesta y agregarle una cadena de contenido en ASP.NET 5/MVC 6



mvc add new controller and view (1)

Puede escribir directamente en el flujo de Response.Body (ya que el Body es un simple System.IO.Stream antiguo) y configurar manualmente el tipo de contenido:

public async Task ContentAction() { var jsonString = "{/"foo/":1,/"bar/":false}"; byte[] data = Encoding.UTF8.GetBytes(jsonString); Response.ContentType = "application/json"; await Response.Body.WriteAsync(data, 0, data.Length); }

Podría ahorrarse algunos problemas al usar algunas utilidades de Microsoft.AspNet.Http :

  • El método de extensión WriteAsync para escribir el contenido de la cadena en el cuerpo de la respuesta.
  • La clase MediaTypeHeaderValue para especificar el encabezado de tipo de contenido. (Hace algunas validaciones y tiene una API para agregar parámetros adicionales como el conjunto de caracteres)

Así se vería la misma acción:

public async Task ContentAction() { var jsonString = "{/"foo/":1,/"bar/":false}"; Response.ContentType = new MediaTypeHeaderValue("application/json").ToString(); await Response.WriteAsync(jsonString, Encoding.UTF8); }

En caso de duda, siempre puede echar un vistazo a la implementación de ContentResult y / o JsonResult .

En la API 2, solíamos hacer esto para obtener una respuesta con el contenido de la cadena:

var response = Request.CreateResponse(HttpStatusCode.Ok); response.Content = new StringContent("<my json result>", Encoding.UTF8, "application/json");

¿Cómo se puede lograr lo mismo en ASP.NET 5 / MVC 6 sin usar ninguna de las clases integradas como ObjectResult?