Tôi cần nhận lại phản hồi bằng văn bản thuần tuý từ bộ điều khiển ASP.NET Web API.Có cách nào để buộc ASP.NET Web API trả về văn bản thuần túy không?
Tôi đã thử thực hiện yêu cầu với Accept: text/plain
nhưng có vẻ như không phải là mẹo. Bên cạnh đó, yêu cầu nằm ngoài và ngoài tầm kiểm soát của tôi. Những gì tôi sẽ thực hiện là bắt chước theo cách cũ của ASP.NET:
context.Response.ContentType = "text/plain";
context.Response.Write("some text);
Bất kỳ ý tưởng nào?
EDIT, giải pháp: Dựa trên câu trả lời Aliostad, tôi thêm vào các định dạng WebAPIContrib văn bản, khởi tạo nó trong Application_Start:
config.Formatters.Add(new PlainTextFormatter());
và điều khiển của tôi đã kết thúc một cái gì đó như:
[HttpGet, HttpPost]
public HttpResponseMessage GetPlainText()
{
return ControllerContext.Request.CreateResponse(HttpStatusCode.OK, "Test data", "text/plain");
}
Đây là giải pháp mà tôi đã đi vì API của tôi sẽ trả về các đối tượng JSON đến 99% tất cả các phương thức, chỉ một vài (rất ít) phương thức sẽ cần các câu trả lời chuỗi đơn giản (và đối với nhiều người trong số chúng tôi sử dụng MemoryStream để trả về dữ liệu trực tiếp trong phản hồi để nó không phải là vấn đề.) Chỉ trong 2 hoặc 3 phương thức tôi trả về một chuỗi .NET, và nó đã được trả về như một chuỗi JSON. Câu trả lời của bạn, IMHO, là phản ứng KISS cho vấn đề này (mặc dù nó không phải là 100% KHÔ, nhưng tôi chỉ viết một phương pháp mở rộng để chuỗi để làm điều đó ... :-) Tốt đẹp!) StringContent là rất tốt đẹp. Cảm ơn bạn. – Loudenvier
Có một số lớp XXXContent tùy chỉnh để tạo các loại nội dung cụ thể giúp bạn thực hiện điều này một cách thẳng thắn. –
Tôi thấy phản hồi chính xác với phương pháp này. Tuy nhiên, HttpContext.Current là null bây giờ. Bất kỳ ý tưởng về điều này? –