关闭异步响应

时间:2018-07-31 20:59:01

标签: asp.net-core-mvc asp.net-core-2.0

我正在尝试关闭当前响应,但是当我尝试HttpContext.Response.Body.Close()Response.End()不存在时没有任何反应。

之所以要实现这一目标,是因为遗留的验证器功能会写入错误并关闭响应,或者至少停止父WebAPI方法。

示例:

    private async Task Register_v2()
    {
        //Read JSON to object
        UserRegisterRequest userRegisterRequest = Request.ReadBody().FromJson<UserRegisterRequest>();

        //Validate object (legacy static method with a lot of logic)
        //Validate() should end the response if object not validated
        userRegisterRequest.Validate(isJson: true, isThrowHttpError: true);

        //Code still reaches here and request does not close
        string test = "hey I'm alive";
   } 

我可以以某种方式解决中间件问题吗?

谢谢

1 个答案:

答案 0 :(得分:0)

有两种方法来终止Request pipeline

  • app.Run中使用Startup.Configure
  • 请勿在{{1​​}}中调用_next(context)

对于您的方案,您可以通过确定是否调用Middleware.InvokeAsync来尝试第二种选择。

_next(context)