В фоне без await не могу записать лайк в базу, при return NoContent() все диспоузится.
поэтому надо или await писать или делать ручками GetAwaiter().GetResult();
Метод контроллера все равно ожидает выполнение.
все правильно, async/await это не распаралелливание выполнения кода.
Или я что то не так делаю и это плохая практика, при которой лучше дождаться выполнения и нормально вернуть 204
у вас все нормально написано. делается вызов, возвращается 204. никаких проблем быть не должно.
единственное - вы не ловите никакой exception в случае неудачи выполнения LikeAsync и не обрабатываете его.
почитайте еще про
async/await, мне кажется вы не так понимаете эту концепцию