2016-06-01 2 views
7

Startup.cs의 ConfigureServices에 몇 가지 대기 함수를 추가해야하고 문제가 발생합니다.ConfigureServices 클래스를 mvc의 startup.cs에서 비동기로 만들 수 있습니까?

System.InvalidOperationException 필수 서비스를 찾을 수 없습니다. 응용 프로그램 시작 코드에서 'IApplicationBuilder.ConfigureServices (...)'또는 'IApplicationBuilder.UseMvc (...)'호출에서 'IServiceCollection.AddMvc()'를 호출하여 필요한 모든 서비스를 추가하십시오.

아래 코드에서 알 수 있듯이 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(); 
    .... 
} 

ConfigureServices를 비동기 함수로 만들 수 있습니까?

답변

13

아니요, 불가능합니다. 그렇게하면 경쟁 조건이 발생합니다.

대신 비동기 작업이 완료 될 때까지 작업을 동기화하거나 .Wait()/.Result (async 메서드가 데이터를 반환하는지 여부에 따라 다름)을 차단하는 것이 좋습니다.

관련 문제