Middleware v minimálních aplikacích API
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v tématu .NET a .NET Core Zásady podpory. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
WebApplication
automaticky přidá následující middleware v Minimal API applications
závislosti na určitých podmínkách:
UseDeveloperExceptionPage
je přidána jako první, pokud je"Development"
.HostingEnvironment
UseRouting
se přidá sekundu, pokud se kód uživatele ještě nevolalUseRouting
a pokud jsou nakonfigurované koncové body, napříkladapp.MapGet
.UseEndpoints
se přidá na konec kanálu middlewaru, pokud jsou nakonfigurované nějaké koncové body.UseAuthentication
se přidá okamžitě poUseRouting
tom, co uživatelský kód ještě nezavolalUseAuthentication
a pokudIAuthenticationSchemeProvider
je možné ho zjistit v poskytovateli služeb.IAuthenticationSchemeProvider
je přidána ve výchozím nastavení při použitíAddAuthentication
a služby jsou zjištěny pomocíIServiceProviderIsService
.UseAuthorization
se přidá dál, pokud kód uživatele ještě nezavolalUseAuthorization
a pokudIAuthorizationHandlerProvider
je možné ho zjistit v poskytovateli služeb.IAuthorizationHandlerProvider
je přidána ve výchozím nastavení při použitíAddAuthorization
a služby jsou zjištěny pomocíIServiceProviderIsService
.- Mezi uživatelem nakonfigurovaný middleware a koncové body se přidají mezi
UseRouting
aUseEndpoints
.
Následující kód je v podstatě to, co automatický middleware přidaný do aplikace vytvoří:
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 => {});
V některých případech není výchozí konfigurace middlewaru pro aplikaci správná a vyžaduje úpravy. Například UseCors by mělo být volána před UseAuthentication a UseAuthorization. Aplikace musí volat UseAuthentication
a UseAuthorization
pokud UseCors
se volá:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Pokud by se měl middleware spustit před výskytem párování tras, UseRouting měl by být volána a middleware by měl být umístěn před voláním UseRouting
. UseEndpoints v tomto případě se nevyžaduje, protože se automaticky přidá, jak je popsáno výše:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Při přidávání middlewaru terminálu:
- Middleware musí být přidán za
UseEndpoints
. - Aplikace musí volat
UseRouting
,UseEndpoints
aby middleware terminálu mohl být umístěn ve správném umístění.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
Middleware terminálu je middleware, který se spustí, pokud požadavek nezpracuje žádný koncový bod.
WebApplication
automaticky přidá následující middleware v Minimal API applications
závislosti na určitých podmínkách:
UseDeveloperExceptionPage
je přidána jako první, pokud je"Development"
.HostingEnvironment
UseRouting
se přidá sekundu, pokud se kód uživatele ještě nevolalUseRouting
a pokud jsou nakonfigurované koncové body, napříkladapp.MapGet
.UseEndpoints
se přidá na konec kanálu middlewaru, pokud jsou nakonfigurované nějaké koncové body.UseAuthentication
se přidá okamžitě poUseRouting
tom, co uživatelský kód ještě nezavolalUseAuthentication
a pokudIAuthenticationSchemeProvider
je možné ho zjistit v poskytovateli služeb.IAuthenticationSchemeProvider
je přidána ve výchozím nastavení při použitíAddAuthentication
a služby jsou zjištěny pomocíIServiceProviderIsService
.UseAuthorization
se přidá dál, pokud kód uživatele ještě nezavolalUseAuthorization
a pokudIAuthorizationHandlerProvider
je možné ho zjistit v poskytovateli služeb.IAuthorizationHandlerProvider
je přidána ve výchozím nastavení při použitíAddAuthorization
a služby jsou zjištěny pomocíIServiceProviderIsService
.- Mezi uživatelem nakonfigurovaný middleware a koncové body se přidají mezi
UseRouting
aUseEndpoints
.
Následující kód je v podstatě to, co automatický middleware přidaný do aplikace vytvoří:
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 => {});
V některých případech není výchozí konfigurace middlewaru pro aplikaci správná a vyžaduje úpravy. Například UseCors by mělo být volána před UseAuthentication a UseAuthorization. Aplikace musí volat UseAuthentication
a UseAuthorization
pokud UseCors
se volá:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Pokud by se měl middleware spustit před výskytem párování tras, UseRouting měl by být volána a middleware by měl být umístěn před voláním UseRouting
. UseEndpoints v tomto případě se nevyžaduje, protože se automaticky přidá, jak je popsáno výše:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Při přidávání middlewaru terminálu:
- Middleware musí být přidán za
UseEndpoints
. - Aplikace musí volat
UseRouting
,UseEndpoints
aby middleware terminálu mohl být umístěn ve správném umístění.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
Middleware terminálu je middleware, který se spustí, pokud požadavek nezpracuje žádný koncový bod.
Informace o middlewaru antiforgery v minimálních rozhraních API najdete v tématu Prevence útoků XSRF/CSRF (Cross-Site Request Forgery) v ASP.NET Core.
Další informace o middlewaru najdete v tématu ASP.NET Core Middleware a seznam předdefinovaných middlewarů , které je možné přidat do aplikací.
Další informace o minimálních rozhraních API naleznete v tématu Minimal APIs overview
.