0

我正在尝试手动编写我的响应流并关闭它,以便在响应关闭后我可以继续做一些事情。我通过执行以下操作成功实现了这一点:

Response.StatusCode = 200
Response.ContentType = "application/json; charset=utf-8"
Response.Write(j)
Response.Flush()
Response.Close()
DOWORK()

这在大多数情况下都很完美,但是对于 Chrome / Flash,flash 中存在一个错误,导致它假设它是一个 IO 错误。在分析标头时,使用 Return Json(results) 手动发送响应与我在上面的操作方式之间的区别在于,当我正常返回数据时,它使用以下标头:

Content-Length: 44

当我使用上面的代码发送它时,我得到:

Transfer-Encoding: chunked

是否可以做我想做的事但没有数据分块?我知道这不是 ASP.net 特定的,而是 chrome 闪存中的一个错误,但我想解决这个问题。

4

1 回答 1

1

根据我的评论,我正在考虑类似的事情:

public class CustomResult : JsonResult
{
    private Action afterAction;
    private object obj = null;

    public CustomResult(object obj, Action afterAction) : base()
    {
        this.JsonRequestBehavior = System.Web.Mvc.JsonRequestBehavior.AllowGet;
        this.Data = obj;
        this.afterAction = afterAction;
    }

    public override void ExecuteResult(ControllerContext context)
    {
        base.ExecuteResult(context);
        afterAction();
    }
}

现在您可以在控制器操作中调用它:

return new CustomResult(obj, () => { //custom code here, will be executed later });
于 2012-10-12T06:50:45.317 回答