Я работал над презентацией и подумал, что следующее должно завершиться ошибкой, поскольку ActionResult не возвращается в правильном контексте. Я проверил его с помощью VS и не получил ошибок. Я отладил его и знаю, что он переключает потоки. Так что похоже, что это законный код.
Разве ASP.NET не важно, в каком контексте или потоке он находится, как клиентское приложение? Если да, то какую цель обеспечивает AspNetSynchronizationContext? Я не считаю правильным помещать ConfigureAwait в само действие. Что-то кажется неправильным. Кто-нибудь может объяснить?
public async Task<ActionResult> AsyncWithBackendTest()
{
var result = await BackendCall().ConfigureAwait(false);
var server = HttpContext.Server;
HttpContext.Cache["hello"] = "world";
return Content(result);
}