如何在ASP.NET 5 / MVC 6中创建响应消息并向其添加内容字符串
在web api 2中,我们习惯这样做以获得字符串内容的响应:
var response = Request.CreateResponse(HttpStatusCode.Ok); response.Content = new StringContent("", Encoding.UTF8, "application/json");
如何在不使用像ObjectResult这样的内置类的情况下在ASP.NET 5 / MVC 6中实现相同的function?
您可以直接写入Response.Body
流(因为Body
是一个普通的旧System.IO.Stream
)并手动设置内容类型:
public async Task ContentAction() { var jsonString = "{\"foo\":1,\"bar\":false}"; byte[] data = Encoding.UTF8.GetBytes(jsonString); Response.ContentType = "application/json"; await Response.Body.WriteAsync(data, 0, data.Length); }
使用Microsoft.AspNet.Http
一些实用程序可以省去一些麻烦:
- 用于将字符串内容写入响应主体的扩展方法
WriteAsync
。 -
MediaTypeHeaderValue
类,用于指定内容类型标头。 (它做了一些validation,并有一个API来添加像charset这样的额外参数)
所以同样的动作看起来像:
public async Task ContentAction() { var jsonString = "{\"foo\":1,\"bar\":false}"; Response.ContentType = new MediaTypeHeaderValue("application/json").ToString(); await Response.WriteAsync(jsonString, Encoding.UTF8); }
如有疑问,您可以随时查看ContentResult
和/或JsonResult
。
- JSON.NET Parser *似乎*是双重序列化我的对象
- 如何为某个特定类型而不是全局设置Json.NET ContractSerializer?
- 如何使用Breeze与通用工作单元和存储库?
- 如何使用客户端证书在Web API中进行身份validation和授权
- 在Asp.net Web API中处理CORS预检
- unit testing/集成在Visual Studio 2013中使用HttpClient测试Web API
- OData只读属性
- 使用HttpServer或HttpSelfHostServer对Web API进行unit testing
- 将IP地址添加到HttpRequestMessage