Asp.NET Web API“操作已取消。” 例外

Alb*_*ano 5 c# rest exception asp.net-web-api

我正在使用一个 Web API 来处理 FilterAttribute 发生的任何异常。

在WebApiConfig.cs文件中,它被注册:

  config.Filters.Add(new ExceptionHandlerAttribute());
Run Code Online (Sandbox Code Playgroud)

它工作正常,任何时候引发未处理的异常,它都会进入过滤器属性 OnException 方法:

public class ExceptionHandlerAttribute : ExceptionFilterAttribute
{
    public override void OnException(HttpActionExecutedContext context)
    {(...)}
}
Run Code Online (Sandbox Code Playgroud)

现在,我有一个客户端应用程序,它故意以非常小的超时调用 API。似乎每次超时到期,都会以某种方式影响服务器,并且在 FilterAttribute 中捕获以下异常:

context: System.Web.Http.Controllers.HttpActionContext
"The operation was canceled."

at System.Threading.CancellationToken.ThrowOperationCanceledException()
at System.Threading.CancellationToken.ThrowIfCancellationRequested()
at System.Net.Http.HttpContentExtensions.<ReadAsAsyncCore>d__0`1.MoveNext()
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪不显示服务器项目中的任何代码行。似乎当客户端调用被取消时,它会在服务器端引发此异常?这是预期的异常/行为吗?

如果是预期的,我只需忽略取消的客户端调用引发的这种异常?

提前致谢。

小智 0

当您尝试在操作完成之前取消该操作时,会出现此问题。调试您的代码并查看是否有任何 webAPI 方法被调用但未完成。希望这可以帮助。

  • 那是清澈如泥。究竟是什么试图“取消”该操作?如果是 webapi 调用,那么调用是由什么或由谁发起和取消的? (6认同)