作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在 web api 2 中,我们过去常常这样做以获得带有字符串内容的响应:
var response = Request.CreateResponse(HttpStatusCode.Ok);
response.Content = new StringContent("<my json result>", Encoding.UTF8, "application/json");
如何在不使用任何内置类(如 ObjectResult)的情况下在 ASP.NET 5/MVC 6 中实现相同的目标?
最佳答案
您可以直接写入 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
用于指定内容类型 header 的类。 (它进行一些验证并有一个 API 用于添加额外的参数,如字符集)所以同样的 Action 看起来像:
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
.
关于c# - 如何在 ASP.NET 5/MVC 6 中创建响应消息并向其添加内容字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33178983/
我是一名优秀的程序员,十分优秀!