/ / return 404 з асинхронного завдання - c #, asp.net, asp.net-mvc, asynchronous, async-await

повернення 404 з завдання Async - c #, asp.net, asp.net-mvc, асинхронний, async-wait

У мене є цей метод у моєму контролері mvc:

public ActionResult BlaBla()
{
if (!ModelState.IsValid)
return new HttpNotFoundResult();

// ...
}

Я хочу створити його асинхронну версію. Отже, я думав змінити код так:

public async Task<ActionResult> BlaBla()
{
if (!ModelState.IsValid)
return new HttpNotFoundResult(); // Compiling error: this line is not working

// ...
}

Моє питання полягає в тому, як повернути коди помилок (404, 500, ...) з мого контролера mvc під час використання async Task<...> стиль?

Відповіді:

3 для відповіді № 1

Повинна бути мета при використанні async дія, правда? Зазвичай ця мета полягає у виконанні операцій, пов'язаних з введенням / виведенням, таких як віддалені виклики TCP / HTTP, які піддаються за допомогою вашої асинхронної служби.

У цьому типова дія контролера виглядає так:

public async Task<ActionResult> BlaBla()
{
if (!ModelState.IsValid)
{
return new HttpNotFoundResult();
}

MyViewModel model = await myService.GetTheModel();
return View(model);
}

У цьому прикладі, оскільки ви вже чекали на async Операція всередині методу вона буде скомпільована просто чудово. Якщо у вас їх немає async операцій, тоді дуже мало сенсу мати async дії. Це завдасть більше шкоди, ніж допоможе.Отже, запитання, яке ви повинні задати собі, таке: чи справді я маю деякі служби асинхронізації, які можуть скористатися перевагами порту завершення вводу-виводу, щоб виправдати свою потребу в застосуванні асинхронної дії?