What are the differences between ConfigureServices() and Configure() in ASP.NET Core?
In a nutshell:
ConfigureServices
is used to configure Dependency Injection
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
is used to set up middlewares, routing rules, etc
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 });
});
}
Read ASP.NET Core fundamentals to understand how it works in details.
Items in ConfigureServices
are part of Dependency Injection
like logger, Database etc. These kind of things aren't directly associated with a http request.
Items in configure
are part of a http request like routing, mididlewares, static files all these triggers directly when user makes a request.