Как получить CancellationToken из http-запроса в webApi?C#

Место общения программистов C#
Ответить
Anonymous
 Как получить CancellationToken из http-запроса в webApi?

Сообщение Anonymous »

Я отправляю запрос на сервер через HttpClient:

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

public async Task GetTest()
{
CancellationTokenSource tokenSource = new CancellationTokenSource();
string url = String.Format($"api/Test/getTest");

HttpResponseMessage response = await _httpClientFactory.HttpClient.GetAsync(url, tokenSource.Token).ConfigureAwait(false);

response.EnsureSuccessStatusCode();
}
В WebApi (Core 2.1) метод выглядит следующим образом:

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

[HttpGet("getTest")]
public async Task GetTest(CancellationToken token)
{
try
{
object test = await _dataService.GetTest(token);

return Ok(test);
}
catch (Exception ex)
{
this._logger.LogError(ExceptionHelper.ExMessageDeepGet(ex));
return new InternalServerErrorWithMessageResult(ex);
}
}
В _dataService.GetTest(token) я делаю token.ThrowIfCancellationRequested();

Проблема в том, что я получаю новый токен на webapi, а не тот, который я отправил через клиент, поэтому, если я останавливаю запрос (завершаю работу клиента) до ответа от API, исключение не создается..

Есть предложения?

Подробнее здесь: https://stackoverflow.com/questions/542 ... -on-webapi
Ответить

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

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

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

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

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