Sul*_*Aga 21 c# httpresponse asp.net-web-api
在web api 2中,我们习惯于使用字符串内容来获取响应:
var response = Request.CreateResponse(HttpStatusCode.Ok);
response.Content = new StringContent("<my json result>", Encoding.UTF8, "application/json");
Run Code Online (Sandbox Code Playgroud)
如何在不使用像ObjectResult这样的内置类的情况下在ASP.NET 5/MVC 6中实现相同的功能?
Dan*_*.G. 34
您可以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);
}
Run Code Online (Sandbox Code Playgroud)
使用以下的一些实用工具可以省去一些麻烦Microsoft.AspNet.Http:
WriteAsync用于将字符串内容写入响应主体的扩展方法.MediaTypeHeaderValue类用于指定内容类型的报头.(它做了一些验证,并有一个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);
}
Run Code Online (Sandbox Code Playgroud)
如有疑问,您可以随时查看ContentResult和/或的实施情况JsonResult.
| 归档时间: |
|
| 查看次数: |
27580 次 |
| 最近记录: |