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?