ASP.NET Core中的ConfigureServices和Configure之间有什么区别?

时间:2018-07-19 11:45:29

标签: c# asp.net web asp.net-core

docs.microsoft.com上的文档规定以下内容:

  

使用ConfigureServices方法将服务添加到容器。

     

使用Configure方法配置HTTP请求管道。

有人可以用简单的例子解释一下,向容器添加服务是什么意思,以及配置HTTP请求管道是什么意思?

2 个答案:

答案 0 :(得分:12)

简而言之:

ConfigureServices用于配置依赖注入

public void ConfigureServices(IServiceCollection services)
{
    // register MVC services
    services.AddMvc();

    // register configuration
    services.Configure<AppConfiguration>(Configuration.GetSection("RestCalls")); 

    // register custom services
    services.AddScoped<IUserService, UserService>();
    ...
}

Configure用于设置中间件,路由规则等

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    // configure middlewares
    app.UseMiddleware<RequestResponseLoggingMiddleware>();
    app.UseMiddleware<ExceptionHandleMiddleware>();

    app.UseStaticFiles();

    // setup routing
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "Default",
            template: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = 1 });

    });
}

阅读ASP.NET Core fundamentals以了解其详细信息。

答案 1 :(得分:7)

ConfigureServices 中的项目是 Dependency Injection 的一部分,例如记录器、数据库等。这些东西与 http 请求直接没有关联。

configure 中的项目是 http 请求的一部分,例如路由、中间件、静态文件,所有这些都会在用户发出请求时直接触发。