Сергей Протько: 1. Чтобы не плодить в коде клиента множество различных url. 2. Если действие прописано в URL, то как выполнить несколько разнообразных действий?
Михаил: TaskCompletionSource это обьект для отслеживания состояния, он ничего не запускает. await применяется к истансу Task, а не к TaskCompletionSource.
llexus: Тогда сделайте базовый контроллер для всех контроллеров, а в нем переопределие метод OnActionExecuting и в нем если профиль не заполнен, то filterContext.Result = new RedirectResult(Url.Action("Index", "Profile"));