Я написал этот атрибут TimeoutAttribute, чтобы ограничить время выполнения и установить верхний предел времени для действия API. Однако он не работает должным образом. Может ли кто-нибудь подсказать мне, что я здесь делаю не так?
[code]public class TimeoutAttribute : ActionFilterAttribute { private readonly int _timeoutInMilliseconds; private readonly TimeSpan _timeout; public TimeoutAttribute(int timeoutInMilliseconds) { _timeoutInMilliseconds = timeoutInMilliseconds; _timeout = TimeSpan.FromSeconds(timeoutInMilliseconds); }
public override async Task OnActionExecutingAsync(HttpActionContext actionContext, CancellationToken cancellationToken) { using (var cts = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken)) { cts.CancelAfter(_timeout); try { await base.OnActionExecutingAsync(actionContext, cts.Token); } catch (OperationCanceledException) { actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.RequestTimeout, ApiErrorMessages.RequestTimeout); } catch (Exception ex) { throw ex; } } } } [/code] Я написал этот атрибут TimeoutAttribute, чтобы ограничить время выполнения и установить верхний предел времени для действия API. Однако он не работает должным образом. Может ли кто-нибудь подсказать мне, что я здесь делаю не так?