Potrzebuję uzyskać odpowiedź z powrotem w postaci zwykłego tekstu z kontrolera ASP.NET Web API.Czy istnieje sposób na zmusić ASP.NET Web API do zwracania zwykłego tekstu?
Próbowałem zrobić prośbę wraz Accept: text/plain
ale nie wydaje się, by rade. Ponadto żądanie jest zewnętrzne i nie podlega mojej kontroli. Co mogę osiągnąć, to naśladować stary sposób ASP.NET:
context.Response.ContentType = "text/plain";
context.Response.Write("some text);
Wszelkie pomysły?
EDIT, rozwiązanie: podstawie odpowiedzi Aliostad za dodałem formater WebAPIContrib tekstową, zainicjowany go w Application_Start:
config.Formatters.Add(new PlainTextFormatter());
i mój kontroler skończyło się coś takiego:
[HttpGet, HttpPost]
public HttpResponseMessage GetPlainText()
{
return ControllerContext.Request.CreateResponse(HttpStatusCode.OK, "Test data", "text/plain");
}
Jest to w rzeczywistości rozwiązanie, do którego dążyłem, ponieważ moje API zwróci obiekty JSON do 99% wszystkich metod, tylko kilka (bardzo mało) metod będzie potrzebować zwykłych odpowiedzi łańcuchowych (a dla wielu z nich używam obiektu MemoryStream do zwrócenia dane bezpośrednio w odpowiedzi, więc nie było problemu.) Tylko w 2 lub 3 metodach zwróciłem ciąg .NET, który był zwracany jako ciąg JSON. Twoja odpowiedź, IMHO, jest odpowiedzią KISS na ten problem (chociaż nie jest to 100% DRY, ale właśnie napisałem metodę rozszerzenia do napisu, żeby to zrobić ... :-) Nice!) StringContent jest bardzo miły. Dziękuję Ci. – Loudenvier
Istnieje wiele niestandardowych klas XXXContent do tworzenia określonych typów treści, które sprawiają, że tego typu rzeczy są całkiem proste. –
Widzę prawidłową odpowiedź z tym podejściem. Jednak HttpContext.Current ma teraz wartość null. Jakieś pomysły na ten temat? –