Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Varning
Den här versionen av ASP.NET Core stöds inte längre. Mer information finns i supportpolicyn för .NET och .NET Core. För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .
Viktigt!
Den här informationen gäller en förhandsversionsprodukt som kan ändras avsevärt innan den släpps kommersiellt. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, med avseende på den information som tillhandahålls här.
För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .
WebApplication lägger automatiskt till följande mellanprogram i Minimala API-program beroende på vissa villkor:
-
UseDeveloperExceptionPageläggs till först närHostingEnvironmentär"Development". -
UseRoutingläggs till andra om användarkoden inte redan anropasUseRoutingoch om det finns konfigurerade slutpunkter, till exempelapp.MapGet. -
UseEndpointsläggs till i slutet av pipelinen för mellanprogram om några slutpunkter har konfigurerats. -
UseAuthenticationläggs till omedelbart efterUseRoutingom användarkoden inte redan anropasUseAuthenticationoch omIAuthenticationSchemeProviderkan identifieras i tjänstleverantören.IAuthenticationSchemeProviderläggs till som standard när du använderAddAuthenticationoch tjänster identifieras med hjälp avIServiceProviderIsService. -
UseAuthorizationläggs till nästa om användarkoden inte redan anropasUseAuthorizationoch omIAuthorizationHandlerProviderkan identifieras i tjänstleverantören.IAuthorizationHandlerProviderläggs till som standard när du använderAddAuthorizationoch tjänster identifieras med hjälp avIServiceProviderIsService. - Användar konfigurerade mellanprogram och slutpunkter läggs till mellan
UseRoutingochUseEndpoints.
Följande kod är i praktiken vad det automatiska mellanprogrammet som läggs till i appen genererar:
if (isDevelopment)
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
if (isAuthenticationConfigured)
{
app.UseAuthentication();
}
if (isAuthorizationConfigured)
{
app.UseAuthorization();
}
// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints
app.UseEndpoints(e => {});
I vissa fall är standardkonfigurationen för mellanprogram inte korrekt för appen och kräver ändringar. Till exempel UseCors bör anropas före UseAuthentication och UseAuthorization. Appen måste anropa UseAuthentication och UseAuthorization om UseCors anropas:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Om mellanprogram ska köras innan routningsmatchning sker UseRouting ska anropas och mellanprogrammet ska placeras före anropet till UseRouting.
UseEndpoints krävs inte i det här fallet eftersom det läggs till automatiskt enligt beskrivningen tidigare:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
När du lägger till ett terminalmellanprogram:
- Mellanprogrammet måste läggas till efter
UseEndpoints. - Appen måste anropa
UseRoutingochUseEndpointsså att terminalmellanprogrammet kan placeras på rätt plats.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
Terminalmellanprogram är mellanprogram som körs om ingen slutpunkt hanterar begäran.
WebApplication lägger automatiskt till följande mellanprogram i Minimala API-program beroende på vissa villkor:
-
UseDeveloperExceptionPageläggs till först närHostingEnvironmentär"Development". -
UseRoutingläggs till andra om användarkoden inte redan anropasUseRoutingoch om det finns konfigurerade slutpunkter, till exempelapp.MapGet. -
UseEndpointsläggs till i slutet av pipelinen för mellanprogram om några slutpunkter har konfigurerats. -
UseAuthenticationläggs till omedelbart efterUseRoutingom användarkoden inte redan anropasUseAuthenticationoch omIAuthenticationSchemeProviderkan identifieras i tjänstleverantören.IAuthenticationSchemeProviderläggs till som standard när du använderAddAuthenticationoch tjänster identifieras med hjälp avIServiceProviderIsService. -
UseAuthorizationläggs till nästa om användarkoden inte redan anropasUseAuthorizationoch omIAuthorizationHandlerProviderkan identifieras i tjänstleverantören.IAuthorizationHandlerProviderläggs till som standard när du använderAddAuthorizationoch tjänster identifieras med hjälp avIServiceProviderIsService. - Användar konfigurerade mellanprogram och slutpunkter läggs till mellan
UseRoutingochUseEndpoints.
Följande kod är i praktiken vad det automatiska mellanprogrammet som läggs till i appen genererar:
if (isDevelopment)
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
if (isAuthenticationConfigured)
{
app.UseAuthentication();
}
if (isAuthorizationConfigured)
{
app.UseAuthorization();
}
// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints
app.UseEndpoints(e => {});
I vissa fall är standardkonfigurationen för mellanprogram inte korrekt för appen och kräver ändringar. Till exempel UseCors bör anropas före UseAuthentication och UseAuthorization. Appen måste anropa UseAuthentication och UseAuthorization om UseCors anropas:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Om mellanprogram ska köras innan routningsmatchning sker UseRouting ska anropas och mellanprogrammet ska placeras före anropet till UseRouting.
UseEndpoints krävs inte i det här fallet eftersom det läggs till automatiskt enligt beskrivningen tidigare:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
När du lägger till ett terminalmellanprogram:
- Mellanprogrammet måste läggas till efter
UseEndpoints. - Appen måste anropa
UseRoutingochUseEndpointsså att terminalmellanprogrammet kan placeras på rätt plats.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
Terminalmellanprogram är mellanprogram som körs om ingen slutpunkt hanterar begäran.
Information om mellanprogram mot förfalskning i minimala API:er finns i Förhindra XSRF-/CSRF-attacker (Cross-Site Request Forgery) i ASP.NET Core
Mer information om mellanprogram finns i ASP.NET Core Middleware och listan över inbyggda mellanprogram som kan läggas till i program.
Mer information om minimala API:er finns i ÖVERSIKT över API:er.
ASP.NET Core