gebeurtenis
Power BI DataViz World Championships
14 feb, 16 - 31 mrt, 16
Met 4 kansen om in te gaan, kun je een conferentiepakket winnen en het naar de LIVE Grand Finale in Las Vegas maken
Meer informatieDeze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
Notitie
Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor de huidige release.
Waarschuwing
Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie de .NET- en .NET Core-ondersteuningsbeleidvoor meer informatie. Zie de .NET 9-versie van dit artikelvoor de huidige release.
Belangrijk
Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.
Zie de .NET 9-versie van dit artikelvoor de huidige release.
Door Rick Anderson
ASP.NET Core-apps die zijn gemaakt met de websjablonen, bevatten de opstartcode van de toepassing in het Program.cs
-bestand.
Voor richtlijnen met betrekking tot Blazor-opstart, die de richtlijnen in dit artikel aanvullen of vervangen, zie ASP.NET Core Blazor-opstart-.
De volgende opstartcode voor apps ondersteunt verschillende app-typen:
using WebAll.Components;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseAuthorization();
app.MapGet("/hi", () => "Hello!");
app.MapDefaultControllerRoute();
app.MapRazorPages();
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
app.UseAntiforgery();
app.Run();
Apps die gebruikmaken van EventSource kunnen de opstarttijd meten om de opstartprestaties te begrijpen en te optimaliseren. De gebeurtenis ServerReady
in Microsoft.AspNetCore.Hosting vertegenwoordigt het punt waarop de server gereed is om te reageren op aanvragen.
Gebruik IStartupFilter:
Use{Middleware}
. Gebruik IStartupFilter
om standaardinstellingen toe te voegen aan het begin van de pijplijn zonder expliciet de standaard-middleware te registreren.
IStartupFilter
kan een ander onderdeel namens de auteur van de app Use{Middleware}
aanroepen.Configure
methoden maken.
IStartupFilter.Configure kan een middleware instellen die moet worden uitgevoerd voor of na middleware die door bibliotheken is toegevoegd.Een IStartupFilter
-implementatie implementeert Configure, die een Action<IApplicationBuilder>
ontvangt en retourneert. Een IApplicationBuilder definieert een klasse voor het configureren van de aanvraagpijplijn van een app. Zie Een middleware-pijplijn maken met IApplicationBuildervoor meer informatie.
Elke IStartupFilter
implementatie kan een of meer middlewares toevoegen in de aanvraagpijplijn. De filters worden aangeroepen in de volgorde waarin ze zijn toegevoegd aan de servicecontainer. Filters kunnen middleware toevoegen voor of na het doorgeven van de controle aan het volgende filter, waardoor ze aan het begin of het einde van de apppijplijn worden toegevoegd.
In het volgende voorbeeld ziet u hoe u een middleware registreert bij IStartupFilter
. De RequestSetOptionsMiddleware
middleware stelt een waarde voor opties in op basis van een querytekenreeksparameter:
public class RequestSetOptionsMiddleware
{
private readonly RequestDelegate _next;
public RequestSetOptionsMiddleware(RequestDelegate next)
{
_next = next;
}
// Test with https://localhost:5001/Privacy/?option=Hello
public async Task Invoke(HttpContext httpContext)
{
var option = httpContext.Request.Query["option"];
if (!string.IsNullOrWhiteSpace(option))
{
httpContext.Items["option"] = WebUtility.HtmlEncode(option);
}
await _next(httpContext);
}
}
De RequestSetOptionsMiddleware
is geconfigureerd in de klasse RequestSetOptionsStartupFilter
:
public class RequestSetOptionsStartupFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return builder =>
{
builder.UseMiddleware<RequestSetOptionsMiddleware>();
next(builder);
};
}
}
De IStartupFilter
-implementatie is geregistreerd in Program.cs
:
using WebStartup.Middleware;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddTransient<IStartupFilter,
RequestSetOptionsStartupFilter>();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Wanneer een queryreeksparameter voor option
wordt opgegeven, verwerkt de middleware de waardetoewijzing voordat de ASP.NET Core-middleware het antwoord weergeeft:
@page
@model PrivacyModel
@{
ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>
<p> Append query string ?option=hello</p>
Option String: @HttpContext.Items["option"];
De uitvoeringsvolgorde van middleware wordt ingesteld op basis van de volgorde van IStartupFilter
registraties:
Meerdere IStartupFilter
-implementaties kunnen met dezelfde objecten communiceren. Als bestellen belangrijk is, bestelt u de IStartupFilter
serviceregistraties zodat deze overeenkomen met de volgorde die hun middlewares moeten uitvoeren.
Bibliotheken kunnen middleware toevoegen met een of meer IStartupFilter
implementaties die vóór of na andere app-middleware worden uitgevoerd die zijn geregistreerd bij IStartupFilter
. Een IStartupFilter
middleware aanroepen voordat een middleware wordt toegevoegd door de IStartupFilter
van een bibliotheek:
U kunt de ASP.NET Core-app niet uitbreiden wanneer u Configure
overschrijft. Zie dit GitHub-probleemvoor meer informatie.
Met een IHostingStartup-implementatie kunt u verbeteringen aan een app toevoegen bij het opstarten vanuit een externe assembly buiten het Program.cs
-bestand van de app. Zie Hosting-opstartassembly's gebruiken in ASP.NET Corevoor meer informatie.
Zie voor meer informatie over het gebruik van de ConfigureServices en Configure methoden met het minimale hostingmodel:
ASP.NET Core-apps die zijn gemaakt met de websjablonen, bevatten de opstartcode van de toepassing in het Program.cs
-bestand.
De volgende opstartcode voor apps ondersteunt:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseAuthorization();
app.MapGet("/hi", () => "Hello!");
app.MapDefaultControllerRoute();
app.MapRazorPages();
app.Run();
Zie ASP.NET Core fundamentals overviewvoor meer informatie over het opstarten van toepassingen.
Gebruik IStartupFilter:
Use{Middleware}
. Gebruik IStartupFilter
om standaardinstellingen toe te voegen aan het begin van de pijplijn zonder expliciet de standaard-middleware te registreren.
IStartupFilter
kan een ander onderdeel namens de auteur van de app Use{Middleware}
aanroepen.Configure
methoden maken.
IStartupFilter.Configure kan een middleware instellen die moet worden uitgevoerd voor of na middleware die door bibliotheken is toegevoegd.
IStartupFilter
implementeert Configure, die een Action<IApplicationBuilder>
ontvangt en retourneert. Een IApplicationBuilder definieert een klasse voor het configureren van de aanvraagpijplijn van een app. Zie Een middleware-pijplijn maken met IApplicationBuildervoor meer informatie.
Elke IStartupFilter
kan een of meer middlewares toevoegen in de aanvraagpijplijn. De filters worden aangeroepen in de volgorde waarin ze zijn toegevoegd aan de servicecontainer. Filters kunnen middleware toevoegen voor of nadat de controle is doorgegeven aan het volgende filter, waardoor ze aan het begin of einde van de app-pijplijn worden toegevoegd.
In het volgende voorbeeld ziet u hoe u een middleware registreert bij IStartupFilter
. De RequestSetOptionsMiddleware
middleware stelt een waarde voor opties in op basis van een querytekenreeksparameter:
public class RequestSetOptionsMiddleware
{
private readonly RequestDelegate _next;
public RequestSetOptionsMiddleware(RequestDelegate next)
{
_next = next;
}
// Test with https://localhost:5001/Privacy/?option=Hello
public async Task Invoke(HttpContext httpContext)
{
var option = httpContext.Request.Query["option"];
if (!string.IsNullOrWhiteSpace(option))
{
httpContext.Items["option"] = WebUtility.HtmlEncode(option);
}
await _next(httpContext);
}
}
De RequestSetOptionsMiddleware
is in de klasse RequestSetOptionsStartupFilter
geconfigureerd.
namespace WebStartup.Middleware;
// <snippet1>
public class RequestSetOptionsStartupFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return builder =>
{
builder.UseMiddleware<RequestSetOptionsMiddleware>();
next(builder);
};
}
}
// </snippet1>
De IStartupFilter
staat geregistreerd in Program.cs
.
using WebStartup.Middleware;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddTransient<IStartupFilter,
RequestSetOptionsStartupFilter>();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Wanneer een queryreeksparameter voor option
wordt opgegeven, verwerkt de middleware de waardetoewijzing voordat de ASP.NET Core-middleware het antwoord weergeeft:
@page
@model PrivacyModel
@{
ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>
<p> Append query string ?option=hello</p>
Option String: @HttpContext.Items["option"];
De uitvoeringsvolgorde van middleware wordt ingesteld op basis van de volgorde van IStartupFilter
registraties:
Meerdere IStartupFilter
-implementaties kunnen met dezelfde objecten communiceren. Als de volgorde belangrijk is, sorteert u de IStartupFilter
serviceregistraties zodat deze overeenkomen met de volgorde waarin de middlewares moeten draaien.
Bibliotheken kunnen middleware toevoegen met een of meer IStartupFilter
implementaties die vóór of na andere app-middleware worden uitgevoerd die zijn geregistreerd bij IStartupFilter
. Een IStartupFilter
middleware aanroepen voordat een middleware wordt toegevoegd door de IStartupFilter
van een bibliotheek:
Opmerking: u kunt de ASP.NET Core-app niet uitbreiden wanneer u Configure
overschrijft. Zie dit GitHub-probleemvoor meer informatie.
Met een IHostingStartup-implementatie kunt u verbeteringen aan een app toevoegen bij het opstarten vanuit een externe assembly buiten het Program.cs
-bestand van de app. Zie Hosting-opstartassembly's gebruiken in ASP.NET Corevoor meer informatie.
De Startup
-klasse configureert services en de aanvraagpijplijn van de app.
ASP.NET Core-apps maken gebruik van een Startup
-klasse, die Startup
op conventie wordt genoemd. De klasse Startup
:
ConfigureServices
en binnen de app gebruikt via afhankelijkheidsinjectie (DI) of ApplicationServices.
ConfigureServices
en Configure
worden aangeroepen door de ASP.NET Core-runtime wanneer de app wordt gestart:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
}
Het voorgaande voorbeeld is bedoeld voor Razor Pagina's; de MVC-versie is vergelijkbaar.
De Startup
-klasse wordt opgegeven wanneer de host van de app is gebouwd. De Startup
-klasse wordt doorgaans opgegeven door de methode WebHostBuilderExtensions.UseStartup
/<TStartup>
aan te roepen op de hostbouwer:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
De host biedt services die beschikbaar zijn voor de Startup
klasseconstructor. De app voegt extra services toe via ConfigureServices
. Zowel de host- als app-services zijn beschikbaar in Configure
en in de hele app.
Alleen de volgende servicetypen kunnen worden geïnjecteerd in de Startup
constructor bij gebruik van de Generic Host (IHostBuilder):
public class Startup
{
private readonly IWebHostEnvironment _env;
public Startup(IConfiguration configuration, IWebHostEnvironment env)
{
Configuration = configuration;
_env = env;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
if (_env.IsDevelopment())
{
}
else
{
}
}
}
De meeste services zijn pas beschikbaar als de methode Configure
wordt aangeroepen.
Wanneer de app afzonderlijke Startup
klassen definieert voor verschillende omgevingen (bijvoorbeeld StartupDevelopment
), wordt de juiste Startup
klasse geselecteerd tijdens runtime. De klasse waarvan het achtervoegsel de naam overeenkomt met de huidige omgeving, krijgt prioriteit. Als de app wordt uitgevoerd in de ontwikkelomgeving en zowel een Startup
-klasse als een StartupDevelopment
-klasse bevat, wordt de StartupDevelopment
klasse gebruikt. Zie Meerdere omgevingen gebruikenvoor meer informatie.
Zie De host voor meer informatie over de host. Zie voor informatie over het afhandelen van fouten tijdens het opstarten afhandeling van opstartuitzonderingen.
De methode ConfigureServices is:
Configure
methode om de services van de app te configureren.De host kan bepaalde services configureren voordat Startup
methoden worden aangeroepen. Voor meer informatie, zie De host.
Voor functies waarvoor een aanzienlijke installatie is vereist, zijn er Add{Service}
uitbreidingsmethoden op IServiceCollection.
bijvoorbeeldDbContext toevoegen, DefaultIdentity toevoegen, EntityFrameworkStores toevoegen en RazorPages toevoegen:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>(
options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddRazorPages();
}
Als u services toevoegt aan de servicecontainer, worden deze beschikbaar in de app en in de Configure
methode. De services worden opgelost via afhankelijkheidsinjectie of van ApplicationServices.
De methode Configure wordt gebruikt om op te geven hoe de app reageert op HTTP-aanvragen. De aanvraagpijplijn wordt geconfigureerd door middleware- onderdelen toe te voegen aan een IApplicationBuilder exemplaar.
IApplicationBuilder
is beschikbaar voor de methode Configure
, maar deze is niet geregistreerd in de servicecontainer. Hosting maakt een IApplicationBuilder
en geeft deze rechtstreeks door aan Configure
.
De ASP.NET Core-sjablonen de pijplijn configureren met ondersteuning voor:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
}
Het voorgaande voorbeeld is bedoeld voor Razor Pagina's; de MVC-versie is vergelijkbaar.
Elke Use
extensiemethode voegt een of meer middlewareonderdelen toe aan de aanvraagpijplijn.
UseStaticFiles configureert bijvoorbeeld middleware om statische bestandenaan te bieden.
Elk middlewareonderdeel in de aanvraagpijplijn is verantwoordelijk voor het aanroepen van het volgende onderdeel in de pijplijn of het kortsluiten van de keten, indien van toepassing.
Aanvullende services, zoals IWebHostEnvironment
, ILoggerFactory
of iets dat is gedefinieerd in ConfigureServices
, kunnen worden opgegeven in de Configure
methodehandtekening. Deze services worden geïnjecteerd als ze beschikbaar zijn.
Zie ASP.NET Core Middlewarevoor meer informatie over het gebruik van IApplicationBuilder
en de volgorde van middlewareverwerking.
Als u services en de aanvraagverwerkingspijplijn wilt configureren zonder een Startup
-klasse te gebruiken, roept u ConfigureServices
aan en Configure
gemaksmethoden op de hostbouwer. Meerdere oproepen naar ConfigureServices
worden aan elkaar gekoppeld. Als er meerdere Configure
methode-aanroepen bestaan, wordt de laatste Configure
aanroep gebruikt.
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureServices(services =>
{
services.AddControllersWithViews();
})
.Configure(app =>
{
var loggerFactory = app.ApplicationServices
.GetRequiredService<ILoggerFactory>();
var logger = loggerFactory.CreateLogger<Program>();
var env = app.ApplicationServices.GetRequiredService<IWebHostEnvironment>();
var config = app.ApplicationServices.GetRequiredService<IConfiguration>();
logger.LogInformation("Logged in Configure");
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
var configValue = config["MyConfigKey"];
});
});
});
}
Gebruik IStartupFilter:
Use{Middleware}
.
IStartupFilter
wordt gebruikt door ASP.NET Core om standaardwaarden toe te voegen aan het begin van de pijplijn zonder dat de auteur van de app expliciet de standaard-middleware moet registreren.
IStartupFilter
kan een ander onderdeel namens de auteur van de app Use{Middleware}
aanroepen.Configure
methoden maken.
IStartupFilter.Configure kan een middleware instellen die moet worden uitgevoerd voor of na middleware die door bibliotheken is toegevoegd.
IStartupFilter
implementeert Configure, die een Action<IApplicationBuilder>
ontvangt en retourneert. Een IApplicationBuilder definieert een klasse voor het configureren van de aanvraagpijplijn van een app. Zie Een middleware-pijplijn maken met IApplicationBuildervoor meer informatie.
Elke IStartupFilter
kan een of meer middlewares toevoegen in de aanvraagpijplijn. De filters worden aangeroepen in de volgorde waarin ze zijn toegevoegd aan de servicecontainer. Filters kunnen middleware toevoegen voor of na het overdragen van de controle aan het volgende filter, waardoor ze worden toegevoegd aan het begin of einde van de applicatiepijplijn.
In het volgende voorbeeld ziet u hoe u een middleware registreert bij IStartupFilter
. De RequestSetOptionsMiddleware
middleware stelt een waarde voor opties in op basis van een querytekenreeksparameter:
public class RequestSetOptionsMiddleware
{
private readonly RequestDelegate _next;
public RequestSetOptionsMiddleware( RequestDelegate next )
{
_next = next;
}
// Test with https://localhost:5001/Privacy/?option=Hello
public async Task Invoke(HttpContext httpContext)
{
var option = httpContext.Request.Query["option"];
if (!string.IsNullOrWhiteSpace(option))
{
httpContext.Items["option"] = WebUtility.HtmlEncode(option);
}
await _next(httpContext);
}
}
De RequestSetOptionsMiddleware
is geconfigureerd in de klasse RequestSetOptionsStartupFilter
:
public class RequestSetOptionsStartupFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return builder =>
{
builder.UseMiddleware<RequestSetOptionsMiddleware>();
next(builder);
};
}
}
De IStartupFilter
wordt geregistreerd in de servicecontainer in ConfigureServices.
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureServices(services =>
{
services.AddTransient<IStartupFilter,
RequestSetOptionsStartupFilter>();
});
}
Wanneer een queryreeksparameter voor option
wordt opgegeven, verwerkt de middleware de waardetoewijzing voordat de ASP.NET Core-middleware het antwoord weergeeft.
De uitvoeringsvolgorde van middleware wordt ingesteld op basis van de volgorde van IStartupFilter
registraties:
Meerdere IStartupFilter
-implementaties kunnen met dezelfde objecten communiceren. Als de volgorde belangrijk is, rangschikt u de IStartupFilter
serviceregistraties zodat ze overeenkomen met de volgorde waarin hun middlewares moeten draaien.
Bibliotheken kunnen middleware toevoegen met een of meer IStartupFilter
implementaties die vóór of na andere app-middleware worden uitgevoerd die zijn geregistreerd bij IStartupFilter
. Roep een IStartupFilter
-middleware aan voordat een middleware door een bibliotheek via IStartupFilter
wordt toegevoegd.
Met een IHostingStartup-implementatie kunt u verbeteringen aan een app toevoegen bij het opstarten vanuit een externe assembly buiten de Startup
klasse van de app. Zie Hosting-opstartassembly's gebruiken in ASP.NET Corevoor meer informatie.
ASP.NET Core-feedback
ASP.NET Core is een open source project. Selecteer een koppeling om feedback te geven:
gebeurtenis
Power BI DataViz World Championships
14 feb, 16 - 31 mrt, 16
Met 4 kansen om in te gaan, kun je een conferentiepakket winnen en het naar de LIVE Grand Finale in Las Vegas maken
Meer informatieTraining
Module
Services configureren met afhankelijkheidsinjectie in ASP.NET Core - Training
Afhankelijkheidsinjectie in een ASP.NET Core-app begrijpen en implementeren. Gebruik de ingebouwde servicecontainer van ASP.NET Core om afhankelijkheden te beheren. Registreer services bij de servicecontainer.
Documentatie
Overzicht van basisinformatie over ASP.NET Core
Meer informatie over de basisconcepten voor het bouwen van ASP.NET Core-apps, waaronder afhankelijkheidsinjectie (DI), configuratie, middleware en meer.
Afhankelijkheidsinjectie in ASP.NET Core
Meer informatie over hoe ASP.NET Core afhankelijkheidsinjectie implementeert en hoe u deze kunt gebruiken.
Meer informatie over ASP.NET Core middleware en de aanvraagpijplijn.