Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nota
Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 10 di questo articolo.
Avviso
Questa versione di ASP.NET Core non è più supportata. Per altre informazioni, vedere i criteri di supporto di .NET e .NET Core. Per la versione corrente, vedere la versione .NET 9 di questo articolo.
WebApplication aggiunge automaticamente il middleware seguente nelle applicazioni API minime a seconda di determinate condizioni:
-
UseDeveloperExceptionPageviene aggiunto per primo quando èHostingEnvironment"Development". -
UseRoutingviene aggiunto secondo se il codice utente non ha già chiamatoUseRoutinge se sono stati configurati endpoint, ad esempioapp.MapGet. -
UseEndpointsviene aggiunto alla fine della pipeline middleware se sono configurati endpoint. -
UseAuthenticationviene aggiunto immediatamente dopoUseRoutingse il codice utente non ha già chiamatoUseAuthenticatione seIAuthenticationSchemeProviderè possibile rilevare nel provider di servizi.IAuthenticationSchemeProviderviene aggiunto per impostazione predefinita quando si usanoAddAuthenticationi servizi e viene rilevato tramiteIServiceProviderIsService. -
UseAuthorizationviene aggiunto successivamente se il codice utente non ha già chiamatoUseAuthorizatione seIAuthorizationHandlerProviderè possibile rilevare nel provider di servizi.IAuthorizationHandlerProviderviene aggiunto per impostazione predefinita quando si usanoAddAuthorizationi servizi e viene rilevato tramiteIServiceProviderIsService. - Il middleware e gli endpoint configurati dall'utente vengono aggiunti tra
UseRoutingeUseEndpoints.
Il codice seguente è effettivamente ciò che il middleware automatico aggiunto all'app produce:
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 => {});
In alcuni casi, la configurazione del middleware predefinita non è corretta per l'app e richiede modifiche. Ad esempio, UseCors deve essere chiamato prima UseAuthentication di e UseAuthorization. L'app deve chiamare UseAuthentication e UseAuthorization se UseCors viene chiamato:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Se il middleware deve essere eseguito prima che si verifichi la corrispondenza della route, UseRouting deve essere chiamato e il middleware deve essere posizionato prima della chiamata a UseRouting.
UseEndpoints in questo caso non è obbligatorio perché viene aggiunto automaticamente come descritto in precedenza:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Quando si aggiunge un middleware del terminale:
- Il middleware deve essere aggiunto dopo
UseEndpoints. - L'app deve chiamare
UseRoutingeUseEndpointsin modo che il middleware del terminale possa essere posizionato nella posizione corretta.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
Il middleware del terminale è middleware che viene eseguito se nessun endpoint gestisce la richiesta.
WebApplication aggiunge automaticamente il middleware seguente nelle applicazioni API minime a seconda di determinate condizioni:
-
UseDeveloperExceptionPageviene aggiunto per primo quando èHostingEnvironment"Development". -
UseRoutingviene aggiunto secondo se il codice utente non ha già chiamatoUseRoutinge se sono stati configurati endpoint, ad esempioapp.MapGet. -
UseEndpointsviene aggiunto alla fine della pipeline middleware se sono configurati endpoint. -
UseAuthenticationviene aggiunto immediatamente dopoUseRoutingse il codice utente non ha già chiamatoUseAuthenticatione seIAuthenticationSchemeProviderè possibile rilevare nel provider di servizi.IAuthenticationSchemeProviderviene aggiunto per impostazione predefinita quando si usanoAddAuthenticationi servizi e viene rilevato tramiteIServiceProviderIsService. -
UseAuthorizationviene aggiunto successivamente se il codice utente non ha già chiamatoUseAuthorizatione seIAuthorizationHandlerProviderè possibile rilevare nel provider di servizi.IAuthorizationHandlerProviderviene aggiunto per impostazione predefinita quando si usanoAddAuthorizationi servizi e viene rilevato tramiteIServiceProviderIsService. - Il middleware e gli endpoint configurati dall'utente vengono aggiunti tra
UseRoutingeUseEndpoints.
Il codice seguente è effettivamente ciò che il middleware automatico aggiunto all'app produce:
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 => {});
In alcuni casi, la configurazione del middleware predefinita non è corretta per l'app e richiede modifiche. Ad esempio, UseCors deve essere chiamato prima UseAuthentication di e UseAuthorization. L'app deve chiamare UseAuthentication e UseAuthorization se UseCors viene chiamato:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Se il middleware deve essere eseguito prima che si verifichi la corrispondenza della route, UseRouting deve essere chiamato e il middleware deve essere posizionato prima della chiamata a UseRouting.
UseEndpoints in questo caso non è obbligatorio perché viene aggiunto automaticamente come descritto in precedenza:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Quando si aggiunge un middleware del terminale:
- Il middleware deve essere aggiunto dopo
UseEndpoints. - L'app deve chiamare
UseRoutingeUseEndpointsin modo che il middleware del terminale possa essere posizionato nella posizione corretta.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
Il middleware del terminale è middleware che viene eseguito se nessun endpoint gestisce la richiesta.
Per informazioni sul middleware antiforgery nelle API minime, vedere Impedire attacchi xsrf/CSRF (Cross-Site Request Forgery) in ASP.NET Core
Per altre informazioni sul middleware, vedere ASP.NET Middleware core e l'elenco di middleware predefiniti che possono essere aggiunti alle applicazioni.
Per altre informazioni sulle API minime, vedere Panoramica delle API.