此代码:
using (var conn = new SqlConnection(_strConn))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
Response.ContentType = "application/json";
Response.StatusCode = (int)HttpStatusCode.OK;
cmd.CommandText = "SELECT * FROM sometable FOR JSON AUTO";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
await Response.WriteAsync(reader[0].ToString());
}
await Response.Body.FlushAsync();
}
}
}
工作正常,直到我到达客户端。在Chrome中,我在调用此api控制器方法的连接上获得ERR_CONNECTION_RESET。响应是有效的,但套接字关闭似乎是问题。数据已经通过网络发送。
我尝试从此函数返回多个不同的ActionResults以正确关闭连接但无济于事。
此时我已经将整个响应加载到内存中并返回一个按预期工作的JsonResult但我现在变成了一个可怕的内存消费者。
有什么想法吗?