Necesito obtener una respuesta en texto sin formato desde un controlador ASP.NET Web API.¿Hay alguna manera de forzar a ASP.NET Web API a que devuelva texto sin formato?
He intentado hacer una solicitud con Accept: text/plain
pero no parece hacer el truco. Además, la solicitud es externa y está fuera de mi control. Lo que lograría es imitar la antigua forma de ASP.NET:
context.Response.ContentType = "text/plain";
context.Response.Write("some text);
¿Alguna idea?
EDITAR, solución: Sobre la base de la respuesta de Aliostad, he añadido el formateador WebAPIContrib texto, inicializado en el Application_Start:
config.Formatters.Add(new PlainTextFormatter());
y mi controlador terminó algo como:
[HttpGet, HttpPost]
public HttpResponseMessage GetPlainText()
{
return ControllerContext.Request.CreateResponse(HttpStatusCode.OK, "Test data", "text/plain");
}
Esta es, de hecho, la solución que busqué porque mi API devolvería objetos JSON al 99% de todos los métodos, solo unos pocos (muy pocos) métodos necesitarían respuestas de cadenas simples (y para muchos de esos uso un MemoryStream para devolver datos directamente en la respuesta, por lo que no fue un problema.) Solo en 2 o 3 métodos devolví una cadena .NET, y se devolvió como una cadena JSON. Su respuesta, en mi humilde opinión, es la respuesta KISS para este problema (aunque no es 100% DRY, pero acabo de escribir un método de extensión para hacer eso ... :-) ¡Bien!) StringContent es muy bueno. Gracias. – Loudenvier
Hay una serie de clases XXXContent personalizadas para crear tipos específicos de contenido que hacen que este tipo de cosas sean bastante sencillas. –
Veo la respuesta correcta con este enfoque. Sin embargo, HttpContext.Current es nulo ahora. Alguna idea sobre esto? –