Фильтр действий для ограничения времени выполнения API только во время настройки. Что не так с этой реализациейC#

Место общения программистов C#
Anonymous
Фильтр действий для ограничения времени выполнения API только во время настройки. Что не так с этой реализацией

Сообщение Anonymous »

Код: Выделить всё

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;
}
}
}
}
Я написал этот атрибут TimeoutAttribute, чтобы ограничить время выполнения и установить верхний предел времени для действия API. Однако он не работает должным образом. Может ли кто-нибудь подсказать мне, что я здесь делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/790 ... is-wrong-w

Вернуться в «C#»