Megosztás a következőn keresztül:


Köztes szoftver minimális API-alkalmazásokban

Megjegyzés:

Ez nem a cikk legújabb verziója. Az aktuális kiadásról a cikk .NET 10-es verziójában olvashat.

Figyelmeztetés

A ASP.NET Core ezen verziója már nem támogatott. További információt a .NET és a .NET Core támogatási szabályzatában talál. A jelen cikk .NET 9-es verzióját lásd az aktuális kiadásért .

WebApplication bizonyos feltételektől függően automatikusan hozzáadja a következő köztes szoftvereket a Minimal API-alkalmazásokhoz :

  • UseDeveloperExceptionPageakkor lesz először hozzáadva, ha az HostingEnvironment ."Development"
  • UseRouting akkor lesz második, ha a felhasználói kód még nem hívott meg UseRouting , és ha vannak konfigurált végpontok, például app.MapGet.
  • UseEndpoints a köztes szoftverfolyamat végén lesz hozzáadva, ha a végpontok konfigurálva vannak.
  • UseAuthentication közvetlenül azután UseRouting lesz hozzáadva, ha a felhasználói kód még nem hívott, UseAuthentication és ha IAuthenticationSchemeProvider a szolgáltatóban észlelhető. IAuthenticationSchemeProvider a rendszer alapértelmezés szerint hozzáadja a szolgáltatásokat a használat során AddAuthentication, és a szolgáltatások a következő használatával IServiceProviderIsServicevannak észlelve: .
  • UseAuthorization ezután hozzáadódik, ha a felhasználói kód még nem hívott, UseAuthorization és ha IAuthorizationHandlerProvider a szolgáltatóban észlelhető. IAuthorizationHandlerProvider a rendszer alapértelmezés szerint hozzáadja a szolgáltatásokat a használat során AddAuthorization, és a szolgáltatások a következő használatával IServiceProviderIsServicevannak észlelve: .
  • A felhasználó által konfigurált köztes szoftver és végpontok a következők közé UseRoutingUseEndpointskerülnek: .

Az alkalmazáshoz hozzáadott automatikus köztes szoftver gyakorlatilag a következő kódot eredményezi:

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 => {});

Bizonyos esetekben az alapértelmezett köztes szoftverkonfiguráció nem megfelelő az alkalmazáshoz, és módosítást igényel. Például meg kell hívni előtt UseCorsUseAuthentication és UseAuthorization. Az alkalmazásnak meg kell hívnia UseAuthentication , és UseAuthorization ha UseCors van meghívva:

app.UseCors();
app.UseAuthentication();
app.UseAuthorization();

Ha a köztes szoftvereket az útvonalegyeztetés előtt kell futtatni, meg kell hívni, UseRouting és a köztes szoftvernek a hívás UseRoutingelőtt kell lennie. UseEndpoints ebben az esetben nincs szükség rá, mivel a rendszer automatikusan hozzáadja a korábban ismertetett módon:

app.Use((context, next) =>
{
    return next(context);
});

app.UseRouting();

// other middleware and endpoints

Terminál köztes szoftver hozzáadásakor:

  • A köztes szoftvereket a következő után UseEndpointskell hozzáadni: .
  • Az alkalmazásnak meg kell hívnia UseRouting , és UseEndpoints ahhoz, hogy a terminál közbenső szoftvere a megfelelő helyre kerüljön.
app.UseRouting();

app.MapGet("/", () => "hello world");

app.UseEndpoints(e => {});

app.Run(context =>
{
    context.Response.StatusCode = 404;
    return Task.CompletedTask;
});

A terminál köztes szoftver olyan köztes szoftver, amely akkor fut, ha egyetlen végpont sem kezeli a kérést.

WebApplication bizonyos feltételektől függően automatikusan hozzáadja a következő köztes szoftvereket a Minimal API-alkalmazásokhoz :

  • UseDeveloperExceptionPageakkor lesz először hozzáadva, ha az HostingEnvironment ."Development"
  • UseRouting akkor lesz második, ha a felhasználói kód még nem hívott meg UseRouting , és ha vannak konfigurált végpontok, például app.MapGet.
  • UseEndpoints a köztes szoftverfolyamat végén lesz hozzáadva, ha a végpontok konfigurálva vannak.
  • UseAuthentication közvetlenül azután UseRouting lesz hozzáadva, ha a felhasználói kód még nem hívott, UseAuthentication és ha IAuthenticationSchemeProvider a szolgáltatóban észlelhető. IAuthenticationSchemeProvider a rendszer alapértelmezés szerint hozzáadja a szolgáltatásokat a használat során AddAuthentication, és a szolgáltatások a következő használatával IServiceProviderIsServicevannak észlelve: .
  • UseAuthorization ezután hozzáadódik, ha a felhasználói kód még nem hívott, UseAuthorization és ha IAuthorizationHandlerProvider a szolgáltatóban észlelhető. IAuthorizationHandlerProvider a rendszer alapértelmezés szerint hozzáadja a szolgáltatásokat a használat során AddAuthorization, és a szolgáltatások a következő használatával IServiceProviderIsServicevannak észlelve: .
  • A felhasználó által konfigurált köztes szoftver és végpontok a következők közé UseRoutingUseEndpointskerülnek: .

Az alkalmazáshoz hozzáadott automatikus köztes szoftver gyakorlatilag a következő kódot eredményezi:

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 => {});

Bizonyos esetekben az alapértelmezett köztes szoftverkonfiguráció nem megfelelő az alkalmazáshoz, és módosítást igényel. Például meg kell hívni előtt UseCorsUseAuthentication és UseAuthorization. Az alkalmazásnak meg kell hívnia UseAuthentication , és UseAuthorization ha UseCors van meghívva:

app.UseCors();
app.UseAuthentication();
app.UseAuthorization();

Ha a köztes szoftvereket az útvonalegyeztetés előtt kell futtatni, meg kell hívni, UseRouting és a köztes szoftvernek a hívás UseRoutingelőtt kell lennie. UseEndpoints ebben az esetben nincs szükség rá, mivel a rendszer automatikusan hozzáadja a korábban ismertetett módon:

app.Use((context, next) =>
{
    return next(context);
});

app.UseRouting();

// other middleware and endpoints

Terminál köztes szoftver hozzáadásakor:

  • A köztes szoftvereket a következő után UseEndpointskell hozzáadni: .
  • Az alkalmazásnak meg kell hívnia UseRouting , és UseEndpoints ahhoz, hogy a terminál közbenső szoftvere a megfelelő helyre kerüljön.
app.UseRouting();

app.MapGet("/", () => "hello world");

app.UseEndpoints(e => {});

app.Run(context =>
{
    context.Response.StatusCode = 404;
    return Task.CompletedTask;
});

A terminál köztes szoftver olyan köztes szoftver, amely akkor fut, ha egyetlen végpont sem kezeli a kérést.

A minimális API-kban található antiforgery köztes szoftverekkel kapcsolatos információkért lásd: A helyek közötti kérelemhamisítás (XSRF/CSRF) támadásainak megakadályozása a ASP.NET Core-ban

További információ a köztes szoftverről: ASP.NET Core Middleware, és az alkalmazásokhoz hozzáadható beépített köztes szoftver listája .

A minimális API-król további információt az API-k áttekintésében talál.