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

Far*_*nif 18 c# asp.net-core

docs.microsoft.com上的文档说明如下:

使用ConfigureServices方法向容器添加服务.

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

有人可以用简单的例子来解释,通过向容器添加服务以及配置HTTP请求管道意味着什么?

Ale*_*bov 22

简而言之:

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>();
    ...
}
Run Code Online (Sandbox Code Playgroud)

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 });

    });
}
Run Code Online (Sandbox Code Playgroud)

阅读ASP.NET核心基础知识,了解其工作原理.

  • 有趣的是,DI方法主要是“添加...”,而中间件方法主要是“使用...”。说得通。 (2认同)

Kri*_* PC 7

项目ConfigureServicesDependency Injection记录器、数据库等的一部分。这些东西与 http 请求没有直接关联。

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

  • 我喜欢这个简短而直接的答案。 (3认同)