В другом ответе примерно был использован следующий код:
c.Events.OnRedirectToAccessDenied = async (context) => context.Response.StatusCode = 403;
Компилятор предупреждает в операторе стрелки, что выражение не ожидается в любой форме. Удаление ключевого слова async
подтверждает, что для OnRedirectToAccessDenied
требуется функция, которая возвращает задание (Func<RedirectContext<CookieAuthenticationOptions>, Task>
), а следующее не может быть построено:
c.Events.OnRedirectToAccessDenied = (context) => context.Response.StatusCode = 403;
Ключевое слово async
используется только для преобразования Кажется, выражение задачи. Я не видел, чтобы async
использовал этот способ раньше.
Следующий код не выдаст никаких предупреждений компилятора, но выглядит не так элегантно.
c.Events.OnRedirectToAccessDenied = (context) => Task.Run(
() => context.Response.StatusCode = 403
);
Является ли компилятор предупреждение неоправданно, и является ли хорошей идеей использовать async
таким образом?