我需要从 ASP.NET Web API 控制器获取纯文本响应。
我尝试过提出请求Accept: text/plain
但它似乎并没有达到目的。
此外,该请求是外部的,不受我的控制。我要完成的是模仿旧的 ASP.NET 方式:
context.Response.ContentType = "text/plain";
context.Response.Write("some text);
有任何想法吗?
编辑,解决方案:
根据阿利斯塔德的回答,我添加了WebAPI贡献文本格式化程序,在Application_Start中初始化它:
config.Formatters.Add(new PlainTextFormatter());
我的控制器最终是这样的:
[HttpGet, HttpPost]
public HttpResponseMessage GetPlainText()
{
return ControllerContext.Request.CreateResponse(HttpStatusCode.OK, "Test data", "text/plain");
}
嗯...我认为您不需要创建自定义格式化程序来完成这项工作。相反,返回如下内容:
[HttpGet]
public HttpResponseMessage HelloWorld()
{
string result = "Hello world! Time is: " + DateTime.Now;
var resp = new HttpResponseMessage(HttpStatusCode.OK);
resp.Content = new StringContent(result, System.Text.Encoding.UTF8, "text/plain");
return resp;
}
这对我来说很有效,无需使用自定义格式化程序。
如果您明确想要创建输出并覆盖基于 Accept 标头的默认内容协商,您将不想使用Request.CreateResponse()
因为它强制使用 mime 类型。
相反,显式创建一个新的HttpResponseMessage
并手动分配内容。上面的例子使用StringContent
但是还有很多其他内容类可用于从各种 .NET 数据类型/结构返回数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)