1. Запуск функций с внутренними асинхронными вызовами из конструктора статического класса - плохая идея, но SomeMethodAsync().Result
помогает - конечно, нет никакой выгоды для контроллера, но в этом небольшом случае это приемлемо.
2. Да, я неправильно понял async/await
, поэтому я переписал код примерно так:
var get1Task = AService.Call1Async();
var get2Task = BService.Call2Async();
var get3Task = CService.Call3Async();
await Task.WhenAll(get1Task, get2Task, get3Task);
var r1 = get1Task.Result;
var r2 = get2Task.Result;
var r3 = get3Task.Result;
//more logic
Это дало мне хорошее ускорение на страницах с большим количеством вызовов WCF, и я 'Я немного счастлив.
Я благодарю @zuckerberg за указание в правильном направлении.