Фильтр действий для ограничения времени выполнения 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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