Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Note
Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor de huidige release.
Warning
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.
Important
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.
Startup uitbreiden met opstartfilters
Gebruik IStartupFilter:
- Middleware configureren aan het begin of aan het eind van de middlewareketen van een app zonder expliciete aanroep van
Use{Middleware}. GebruikIStartupFilterom standaardinstellingen toe te voegen aan het begin van de pijplijn zonder expliciet de standaard-middleware te registreren.IStartupFilterkan een ander onderdeel namens de auteur van de appUse{Middleware}aanroepen. - Een pijplijn van
Configuremethoden 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 deIStartupFilterserviceregistraties zodat deze overeenkomen met de volgorde die hun middlewares moeten uitvoeren.Bibliotheken kunnen middleware toevoegen met een of meer
IStartupFilterimplementaties die vóór of na andere app-middleware worden uitgevoerd die zijn geregistreerd bijIStartupFilter. EenIStartupFiltermiddleware aanroepen voordat een middleware wordt toegevoegd door deIStartupFiltervan een bibliotheek:- Plaats de serviceregistratie voordat de bibliotheek wordt toegevoegd aan de servicecontainer.
- Als u deze later wilt aanroepen, plaatst u de serviceregistratie nadat de bibliotheek is toegevoegd.
U kunt de ASP.NET Core-app niet uitbreiden wanneer u Configureoverschrijft. Zie dit GitHub-probleemvoor meer informatie.
Configuratie toevoegen bij het opstarten vanuit een externe assembly
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.
Opstarten, ConfigureServices en Configureren
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.
Startup uitbreiden met opstartfilters
Gebruik IStartupFilter:
- Middleware configureren aan het begin of aan het eind van de middlewareketen van een app zonder expliciete aanroep van
Use{Middleware}. GebruikIStartupFilterom standaardinstellingen toe te voegen aan het begin van de pijplijn zonder expliciet de standaard-middleware te registreren.IStartupFilterkan een ander onderdeel namens de auteur van de appUse{Middleware}aanroepen. - Een pijplijn van
Configuremethoden 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 geconfigureerd in de klasse RequestSetOptionsStartupFilter:
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 bestellen belangrijk is, bestelt u deIStartupFilterserviceregistraties zodat deze overeenkomen met de volgorde die hun middlewares moeten uitvoeren.Bibliotheken kunnen middleware toevoegen met een of meer
IStartupFilterimplementaties die vóór of na andere app-middleware worden uitgevoerd die zijn geregistreerd bijIStartupFilter. EenIStartupFiltermiddleware aanroepen voordat een middleware wordt toegevoegd door deIStartupFiltervan een bibliotheek:- Plaats de serviceregistratie voordat de bibliotheek wordt toegevoegd aan de servicecontainer.
- Als u deze later wilt aanroepen, plaatst u de serviceregistratie nadat de bibliotheek is toegevoegd.
Opmerking: u kunt de ASP.NET Core-app niet uitbreiden wanneer u Configureoverschrijft. Zie dit GitHub-probleemvoor meer informatie.
Configuratie toevoegen bij het opstarten vanuit een externe assembly
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.
De opstartklasse
ASP.NET Core-apps maken gebruik van een Startup-klasse, die Startup op conventie wordt genoemd. De klasse Startup:
- U kunt desgewenst een ConfigureServices methode gebruiken om de -services van de app te configureren. Een service is een herbruikbaar onderdeel dat app-functionaliteit biedt. Services worden geregistreerd in
ConfigureServicesen binnen de app gebruikt via afhankelijkheidsinjectie (DI) of ApplicationServices. - Bevat een Configure methode voor het maken van de aanvraagverwerkingspijplijn van de app.
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.
Meerdere opstartopties
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
De methode ConfigureServices is:
- Optional.
- Aangeroepen door de host vóór de
Configuremethode om de services van de app te configureren. - Waar configuratieopties volgens conventie worden ingesteld.
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 configuratiemethode
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:
- uitzonderingspagina voor ontwikkelaars
- Exception handler
- HTTP Strict Transport Security (HSTS)
- HTTPS-omleiding
- Statische bestanden
- ASP.NET Core MVC en Razor Pagina's
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, ILoggerFactoryof iets dat is gedefinieerd in ConfigureServices, kunnen worden opgegeven in de Configure methodehandtekening. Deze services worden geïnjecteerd als ze beschikbaar zijn.
Zie IApplicationBuildervoor meer informatie over het gebruik van en de volgorde van middlewareverwerking.
Services configureren zonder opstarten
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"];
});
});
});
}
Startup uitbreiden met opstartfilters
Gebruik IStartupFilter:
- Als u middleware aan het begin of einde van de van een app wilt configureren, configureert u middleware-pijplijn zonder expliciete aanroep van
Use{Middleware}.IStartupFilterwordt 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.IStartupFilterkan een ander onderdeel namens de auteur van de appUse{Middleware}aanroepen. - Een pijplijn van
Configuremethoden 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 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 bestellen belangrijk is, bestelt u deIStartupFilterserviceregistraties zodat deze overeenkomen met de volgorde die hun middlewares moeten uitvoeren.Bibliotheken kunnen middleware toevoegen met een of meer
IStartupFilterimplementaties die vóór of na andere app-middleware worden uitgevoerd die zijn geregistreerd bijIStartupFilter. EenIStartupFiltermiddleware aanroepen voordat een middleware wordt toegevoegd door deIStartupFiltervan een bibliotheek:- Plaats de serviceregistratie voordat de bibliotheek wordt toegevoegd aan de servicecontainer.
- Als u deze later wilt aanroepen, plaatst u de serviceregistratie nadat de bibliotheek is toegevoegd.
Configuratie toevoegen bij het opstarten vanuit een externe assembly
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.