Necesito obtener una respuesta en texto plano de un controlador de API web ASP.NET.
He intentado hacer una solicitud Accept: text/plain
pero no parece funcionar. Además, la solicitud es externa y está fuera de mi control. Lo que lograría es imitar la antigua forma ASP.NET:
context.Response.ContentType = "text/plain";
context.Response.Write("some text);
¿Algunas ideas?
EDITAR, solución : basado en la respuesta de Aliostad, agregué el formateador de texto WebAPIContrib , lo inicialicé en Application_Start:
config.Formatters.Add(new PlainTextFormatter());
y mi controlador terminó algo así como:
[HttpGet, HttpPost]
public HttpResponseMessage GetPlainText()
{
return ControllerContext.Request.CreateResponse(HttpStatusCode.OK, "Test data", "text/plain");
}
fuente
Si solo está buscando un formateador simple de texto plano sin agregar dependencias adicionales, esto debería ser el truco.
No olvide agregarlo a su configuración global de API web.
Ahora puede pasar objetos de cadena a
fuente
HttpContext.Current
una responsabilidad.httpResponseMessage.Headers
quetext/plain
en su controlador y cuando hayan registrado formateador de texto sin formato.fuente
Para .net core:
https://docs.microsoft.com/en-us/aspnet/core/mvc/models/formatting
fuente
Cuando Aceptar: text / plain no funciona, entonces no hay un formateador registrado para los tipos de mime de texto.
Puede asegurarse de que no haya formateadores para el tipo MIME especificado al obtener una lista de todos los formateadores compatibles de la configuración del servicio.
Cree un formateador de tipos de medios muy sencillo que admita tipos de mime de texto.
http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters
fuente
Una extensión como la siguiente puede reducir la cantidad de líneas y embellecer su código:
Ahora puede consumir la extensión definida en su
Web API
:Al enrutar
{DOMAIN}/api/Home/Index
puede ver el siguiente texto sin formato:fuente