Сделайте метод ConfigureServices асинхронным в Startup.cs

Мне нужно добавить пару ожидающих функций в ConfigureServices в Startup.cs, и я столкнулся с проблемой.

System.InvalidOperationException Не удалось найти необходимые услуги. Пожалуйста, добавьте все необходимые службы, вызвав "IServiceCollection.AddMvc()" внутри вызова "IApplicationBuilder.ConfigureServices(...)" или "IApplicationBuilder.UseMvc(...)" в стартовом коде приложения.

Как видно из приведенного ниже кода, AddMvc и UseMvc находятся в правильном месте, однако я все равно получаю эту ошибку.

public async void ConfigureServices(IServiceCollection services)
{
    ...
    await manager.Initialize();
    var data = await manager.GetData();
    ...
    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory loggerFactory)
{
    ...
    app.UseMvc();
    ....
}

Можно ли настроить функцию ConfigigureServices async?

Ответ 1

Нет, вы не можете. Это приведет к расовому состоянию.

Вместо этого подумайте о том, чтобы сделать вашу операцию синхронной или использовать .Wait()/.Result (в зависимости от того, возвращает ли метод async данные или нет) до тех пор, пока не завершится асинхронная задача.