如何解决异步方法缺乏等待'运算符并将在WebApi 2中同步运行错误?

时间:2017-03-03 05:36:23

标签: c#-4.0 asp.net-web-api2

public async override Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
    {
        // Access Exception using context.Exception;
        Logger.Error(context.Exception.ToString() + Environment.NewLine);

        const string errorMessage = "An unexpected error occured";
        var response = context.Request.CreateResponse(HttpStatusCode.InternalServerError,
            new
            {
                Message = errorMessage
            });

        response.Headers.Add("X-Error", errorMessage);
        context.Result = new ResponseMessageResult(response);
    }

我在Web Api 2中使用上面的代码进行全局异常处理。上面的代码返回以下警告消息。怎么解决这个问题?

  

这种异步方法缺乏等待'运营商并将同步运行。考虑使用' await'运营商等待非阻塞API调用,或等待Task.Run(...)'在后台线程上进行CPU绑定工作

1 个答案:

答案 0 :(得分:2)

如果您没有任何异步工作要做,请不要使用async

public override Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
{
  // Access Exception using context.Exception;
  Logger.Error(context.Exception.ToString() + Environment.NewLine);
  ...
  context.Result = new ResponseMessageResult(response);
  return Task.CompletedTask;
}