Существуют различные примеры для асинхронных контроллеров. Некоторые из них используют CancellationToken в определении метода:
public async Task<ActionResult> ShowItem(int id, CancellationToken cancellationToken)
{
await Database.GetItem(id, cancellationToken);
...
Но другие примеры и даже проекты ASP.NET по умолчанию для VS2013 вообще не используют CancellationToken и работают без него:
public async Task<ActionResult> ShowItem(int id)
{
await Database.GetItem(id);
...
Не понятно, если мы будем использовать CancellationToken в контроллерах или нет (и почему).