Potrzebuję odpowiedzi w postaci zwykłego tekstu z kontrolera interfejsu API sieci Web ASP.NET.
Próbowałem wysłać żądanie, Accept: text/plain
ale wydaje się, że nie działa. Poza tym prośba jest zewnętrzna i poza moją kontrolą. To, co chciałbym osiągnąć, to naśladować stary sposób ASP.NET:
context.Response.ContentType = "text/plain";
context.Response.Write("some text);
Jakieś pomysły?
EDYCJA, rozwiązanie : Na podstawie odpowiedzi Aliostad dodałem program formatujący tekst WebAPIContrib , zainicjowałem go w Application_Start:
config.Formatters.Add(new PlainTextFormatter());
a mój kontroler zakończył się czymś takim:
[HttpGet, HttpPost]
public HttpResponseMessage GetPlainText()
{
return ControllerContext.Request.CreateResponse(HttpStatusCode.OK, "Test data", "text/plain");
}
źródło
Jeśli szukasz prostego programu formatującego zwykły / tekstowy bez dodawania dodatkowych zależności, powinno to załatwić sprawę.
Nie zapomnij dodać go do konfiguracji globalnego interfejsu API sieci Web.
Teraz możesz przekazywać obiekty łańcuchowe do
źródło
Dla .net core:
https://docs.microsoft.com/en-us/aspnet/core/mvc/models/formatting
źródło
HttpContext.Current
z odpowiedzialności.httpResponseMessage.Headers
celutext/plain
w kontrolerze o ile masz zarejestrowany zwykły formatowania tekstu.źródło
Gdy Akceptuj: tekst / zwykły nie działa, nie ma zarejestrowanego programu formatującego dla typów MIME dla tekstu.
Możesz upewnić się, że nie ma elementów formatujących dla określonego typu MIME, pobierając listę wszystkich obsługiwanych elementów formatujących z konfiguracji usługi.
Utwórz bardzo prosty program do formatowania typów multimediów, który obsługuje tekstowe typy MIME.
http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters
źródło
Rozszerzenie, takie jak poniższe, może zmniejszyć liczbę wierszy i upiększyć kod:
Teraz możesz wykorzystać zdefiniowane rozszerzenie w
Web API
:Po routingu
{DOMAIN}/api/Home/Index
możesz zobaczyć następujący zwykły tekst:źródło