Задать вопрос
Jeer
@Jeer
уверенный пользователь

Как в контроллеры привязывается CancellationToken?

Добрый день,
Хочу перевести код на асинхронный, но просто переделать методы на async Task и понаставить await-ов недостаточно же, необходимо прокинуть везде CancellationToken
И такой вопрос, а как вообще приложение понимает, что это именно тот токен, который нужен всем. Если будет отмена запроса, прокинется ли значение токена ниже? Я ведь просто руками в параметры метода добавляю еще один параметр с произвольным именем, обычно что-то вроде CancellationToken ct. Что будет, если я его вначале поставлю, например, плюс там еще могут быть какие-то другие параметры? Кто занимается этими вот привязками? В интернете что-то даже вопрос не могу сформулировать нормально

[HttpPost]
public async Task<IActionResult> EditEmployeeAttestation(EmployeeAttestationBlank employeeAttestation, IFormCollection parameter, CancellationToken ct)
{
	if (ModelState.IsValid)
	{
		await _employeesService.EditEmployeeAttestation(employeeAttestation, ct);

		return RedirectToAction("Index");
	}

	return View("EditEmployeeAttestation", employeeAttestation);
}
  • Вопрос задан
  • 324 просмотра
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
Если совсем боишься - можешь брать CancellationToken не из аргументов, а из контекста (HttpContext.RequestAborted)

А подсовывает его тебе рантайм через процесс под названием model binding:
https://learn.microsoft.com/en-us/aspnet/core/mvc/...
Биндинг происходит чисто по совпадению типа и имя аргумента не влияет на него.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы