C# ASP.NET 5 MVC 6 DI:ServiceProvider未解析类型

C# ASP.NET 5 MVC 6 DI:ServiceProvider未解析类型,c#,dependency-injection,asp.net-core,asp.net-core-mvc,C#,Dependency Injection,Asp.net Core,Asp.net Core Mvc,在下面的代码中,serviceProvider.GetService()正在解析为null: public void ConfigureService(IServiceCollection services) { var serviceProvider = services.BuildServiceProvider(); services.AddSingleton<DocumentDbConnection>( x => new Document

在下面的代码中,
serviceProvider.GetService()
正在解析为
null

public void ConfigureService(IServiceCollection services)
{
    var serviceProvider = services.BuildServiceProvider();

    services.AddSingleton<DocumentDbConnection>(
        x => new DocumentDbConnection(uri, authKey));

    // service is null?
    var connection = serviceProvider.GetService<DocumentDbConnection>();

    services.AddTransient<IStopRepository, StopRepository>(
        x => new StopRepository(connection, databaseId, collectionId));
}
public void配置服务(IServiceCollection服务)
{
var serviceProvider=services.BuildServiceProvider();
服务.AddSingleton(
x=>newdocumentdbconnection(uri,authKey));
//服务为空?
var connection=serviceProvider.GetService();
services.AddTransient(
x=>newstopRepository(连接、数据库ID、集合ID));
}

为什么会这样?该类型是在调用
GetService
之前注册的,因此它是否应该解析为单例?

在注册
DocumentDbConnection
之前,您正在构建服务提供程序。你应该先注册你需要的服务。然后,
BuildServiceProvider
将使用在此之前注册的服务构建一个服务提供商:

services.AddSingleton<DocumentDbConnection>(x => new DocumentDbConnection(uri, authKey));
var serviceProvider = services.BuildServiceProvider();

// code using serviceProvider
services.AddSingleton(x=>newDocumentDBConnection(uri,authKey));
var serviceProvider=services.BuildServiceProvider();
//使用serviceProvider的代码