.NET - Startup Class in a Nutshell
Tutorial built with .NET 5.0
Related posts:
- .NET + MSBuild - C# Project File (.csproj) in a Nutshell
- .NET - Program Class and Main Method in a Nutshell
The Startup class configures the services available to the .NET Dependency Injection (DI) container in the ConfigureServices()
method, and configures the .NET request pipeline for the application in the Configure()
method. Both methods are called by the .NET runtime when the app starts, first ConfigureServices()
followed by Configure()
.
The .NET host passes an IApplicationBuilder
to the Configure()
method, all DI services are also available to Configure()
and can be added as parameters to the method (e.g. public void Configure(IApplicationBuilder app, IMyService myService) { ... }
). For more info on the startup class and both configure methods see https://docs.microsoft.com/aspnet/core/fundamentals/startup.
A minimal .NET Startup class
Below is an example of a minimal Startup class with the ConfigureServices()
and Configure()
methods described above, it's from a tutorial I posted recently on how to create a minimal .NET API by hand from scratch, for more info see .NET 5.0 - Bare Bones API Tutorial.
The services.AddControllers()
method registers services for controllers with the .NET dependency injection (DI) system.
Routing middleware is added to the request pipeline by calling both app.UseRouting()
and app.UseEndpoints(...)
, the first adds route matching middleware and the second adds endpoint execution middleware to the pipeline. The lambda expression x => x.MapControllers()
is passed to app.UseEndpoints()
to create endpoints for action methods of attribute routed controllers (controllers decorated with the [Route("...")]
attribute).
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
namespace WebApi
{
public class Startup
{
// add services to the DI container
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
// configure the HTTP request pipeline
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
app.UseEndpoints(x => x.MapControllers());
}
}
}
Subscribe or Follow Me For Updates
Subscribe to my YouTube channel or follow me on Twitter, Facebook or GitHub to be notified when I post new content.
- Subscribe on YouTube at https://www.youtube.com/JasonWatmore
- Follow me on Twitter at https://twitter.com/jason_watmore
- Follow me on Facebook at https://www.facebook.com/JasonWatmoreBlog
- Follow me on GitHub at https://github.com/cornflourblue
- Feed formats available: RSS, Atom, JSON
Other than coding...
I'm currently attempting to travel around Australia by motorcycle with my wife Tina on a pair of Royal Enfield Himalayans. You can follow our adventures on YouTube, Instagram and Facebook.
- Subscribe on YouTube at https://www.youtube.com/TinaAndJason
- Follow us on Instagram at https://www.instagram.com/tinaandjason
- Follow us on Facebook at https://www.facebook.com/TinaAndJasonVlog
- Visit our website at https://tinaandjason.com.au
Need Some .NET Help?
Search fiverr to find help quickly from experienced .NET developers.