Preciso receber uma resposta em texto sem formatação de um controlador de API da Web do ASP.NET.
Eu tentei fazer uma solicitação com, Accept: text/plain
mas parece não funcionar. Além disso, o pedido é externo e está fora de meu controle. O que eu realizaria é imitar a maneira antiga do ASP.NET:
context.Response.ContentType = "text/plain";
context.Response.Write("some text);
Alguma ideia?
EDIT, solução : com base na resposta de Aliostad, adicionei o formatador de texto WebAPIContrib e o inicializei no Application_Start:
config.Formatters.Add(new PlainTextFormatter());
e meu controlador acabou algo como:
[HttpGet, HttpPost]
public HttpResponseMessage GetPlainText()
{
return ControllerContext.Request.CreateResponse(HttpStatusCode.OK, "Test data", "text/plain");
}
fonte
Se você está procurando apenas um formatador simples de texto sem adição de dependências adicionais, isso deve ser suficiente.
Não se esqueça de adicioná-lo à sua configuração de API da Web global.
Agora você pode passar objetos de string para
fonte
HttpContext.Current
uma responsabilidade.httpResponseMessage.Headers
atext/plain
em seu controlador desde que você tenha registrado formatador de texto simples.fonte
Para o núcleo .net:
https://docs.microsoft.com/en-us/aspnet/core/mvc/models/formatting
fonte
Quando Accept: text / plain não funciona, não há formatador registrado para tipos de mímica de texto.
Você pode garantir que não haja formatadores para o tipo MIME especificado, obtendo a lista de todos os formatadores suportados na configuração do serviço.
Crie um formatador de tipo de mídia muito simples que suporte tipos de mímica de texto.
http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters
fonte
Uma extensão como a seguinte pode reduzir o número de linhas e embelezar seu código:
Agora você pode consumir a extensão definida no seu
Web API
:Ao rotear,
{DOMAIN}/api/Home/Index
você pode ver o seguinte texto sem formatação:fonte