【发布时间】:2015-05-16 09:31:23
【问题描述】:
我正在使用一个 Web API 来处理 FilterAttribute 发生的任何异常。
在WebApiConfig.cs文件中注册:
config.Filters.Add(new ExceptionHandlerAttribute());
它可以正常工作,并且每当引发未处理的异常时,它都会进入过滤器属性 OnException 方法:
public class ExceptionHandlerAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{(...)}
}
现在,我有一个客户端应用程序会故意以非常小的超时时间调用 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()
堆栈跟踪不显示服务器项目中的任何代码行。 似乎当客户端调用被取消时,它会在服务器端引发这个异常?这是预期的异常/行为吗?
如果是预期的,我只需要忽略取消的客户端调用引发的这种异常吗?
提前致谢。
【问题讨论】:
标签: c# rest asp.net-web-api exception-handling