我需要从ASP.NET Web API控制器以纯文本形式获取响应。有没有办法强制ASP.NET Web API返回纯文本?
我试过用Accept: text/plain
做了一个请求,但它似乎没有办法。 此外,该请求是外部的,并且不在我的控制之下。我会做的是模仿旧的ASP.NET方式:
context.Response.ContentType = "text/plain";
context.Response.Write("some text);
任何想法?
编辑,解决: 基于Aliostad的回答,我添加了WebAPIContrib文本格式化,初始化它在Application_Start:
config.Formatters.Add(new PlainTextFormatter());
和我的控制器结束了类似:
[HttpGet, HttpPost]
public HttpResponseMessage GetPlainText()
{
return ControllerContext.Request.CreateResponse(HttpStatusCode.OK, "Test data", "text/plain");
}
这实际上是我去的解决方案,因为我的API会将JSON对象返回到所有方法的99%,只有少数(非常少)方法需要纯字符串响应(对于许多我使用MemoryStream返回的方法数据直接在响应中,所以这不成问题。)只有2或3个方法返回了一个.NET字符串,并且它以JSON字符串形式返回。恕我直言,你的答案是KISS对这个问题的回应(虽然它不是100%干的,但我只是写了一个扩展方法来将字符串做到这一点...... :-)不错!)StringContent非常好。谢谢。 – Loudenvier 2013-06-15 12:34:33
有许多自定义的XXXContent类可以创建特定类型的内容,使这类事情变得非常简单。 – 2015-03-20 02:19:07
我用这种方法看到了正确的答案。但是,HttpContext.Current现在为空。对此有何想法? – 2015-05-12 22:05:25