Middleware en aplicaciones de API mínimas
WebApplication
agrega automáticamente el siguiente middleware en Minimal API applications
en función de determinadas condiciones:
UseDeveloperExceptionPage
se agrega primero cuandoHostingEnvironment
es"Development"
.UseRouting
se agrega en segundo lugar si el código de usuario aún no llamóUseRouting
a y si hay puntos de conexión configurados, por ejemploapp.MapGet
.UseEndpoints
se agrega al final de la canalización de middleware si hay algún punto de conexión configurado.UseAuthentication
se agrega inmediatamente después deUseRouting
si el código de usuario no llamó aún aUseAuthentication
y siIAuthenticationSchemeProvider
se puede detectar en el proveedor de servicios.IAuthenticationSchemeProvider
se agrega de forma predeterminada cuando se usaAddAuthentication
, y los servicios se detectan medianteIServiceProviderIsService
.UseAuthorization
se agrega a continuación si el código de usuario no llamó aún aUseAuthorization
y siIAuthorizationHandlerProvider
se puede detectar en el proveedor de servicios.IAuthorizationHandlerProvider
se agrega de forma predeterminada cuando se usaAddAuthorization
, y los servicios se detectan medianteIServiceProviderIsService
.- El middleware y los puntos de conexión configurados por el usuario se agregan entre
UseRouting
yUseEndpoints
.
El código siguiente es eficazmente lo que produce el middleware automático que se agrega a la aplicación:
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 => {});
En algunos casos, la configuración predeterminada del middleware no es correcta para la aplicación y requiere modificación. Por ejemplo, UseCors se debe llamar a antes UseAuthentication de y UseAuthorization. La aplicación debe llamar a UseAuthentication
y UseAuthorization
si se llama a UseCors
:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Si se debe ejecutar el middleware antes de que se produzca la coincidencia de rutas, se debe llamar a UseRouting y se debe colocar el middleware antes de la llamada a UseRouting
. UseEndpoints no es necesario en este caso, ya que se agrega automáticamente como se ha descrito anteriormente:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Al agregar un middleware de terminal:
- El middleware debe agregarse después de
UseEndpoints
. - La aplicación debe llamar
UseRouting
a yUseEndpoints
para que el middleware de terminal se pueda colocar en la ubicación correcta.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
El middleware de terminal es un middleware que se ejecuta si ningún punto de conexión controla la solicitud.
WebApplication
agrega automáticamente el siguiente middleware en Minimal API applications
en función de determinadas condiciones:
UseDeveloperExceptionPage
se agrega primero cuandoHostingEnvironment
es"Development"
.UseRouting
se agrega en segundo lugar si el código de usuario aún no llamóUseRouting
a y si hay puntos de conexión configurados, por ejemploapp.MapGet
.UseEndpoints
se agrega al final de la canalización de middleware si hay algún punto de conexión configurado.UseAuthentication
se agrega inmediatamente después deUseRouting
si el código de usuario no llamó aún aUseAuthentication
y siIAuthenticationSchemeProvider
se puede detectar en el proveedor de servicios.IAuthenticationSchemeProvider
se agrega de forma predeterminada cuando se usaAddAuthentication
, y los servicios se detectan medianteIServiceProviderIsService
.UseAuthorization
se agrega a continuación si el código de usuario no llamó aún aUseAuthorization
y siIAuthorizationHandlerProvider
se puede detectar en el proveedor de servicios.IAuthorizationHandlerProvider
se agrega de forma predeterminada cuando se usaAddAuthorization
, y los servicios se detectan medianteIServiceProviderIsService
.- El middleware y los puntos de conexión configurados por el usuario se agregan entre
UseRouting
yUseEndpoints
.
El código siguiente es eficazmente lo que produce el middleware automático que se agrega a la aplicación:
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 => {});
En algunos casos, la configuración predeterminada del middleware no es correcta para la aplicación y requiere modificación. Por ejemplo, UseCors se debe llamar a antes UseAuthentication de y UseAuthorization. La aplicación debe llamar a UseAuthentication
y UseAuthorization
si se llama a UseCors
:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Si se debe ejecutar el middleware antes de que se produzca la coincidencia de rutas, se debe llamar a UseRouting y se debe colocar el middleware antes de la llamada a UseRouting
. UseEndpoints no es necesario en este caso, ya que se agrega automáticamente como se ha descrito anteriormente:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Al agregar un middleware de terminal:
- El middleware debe agregarse después de
UseEndpoints
. - La aplicación debe llamar
UseRouting
a yUseEndpoints
para que el middleware de terminal se pueda colocar en la ubicación correcta.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
El middleware de terminal es un middleware que se ejecuta si ningún punto de conexión controla la solicitud.
Para obtener información sobre el middleware antifalsificación en las API mínimas, consulte Evitar ataques de falsificación de solicitudes entre sitios (XSRF/CSRF) en ASP.NET Core
Para obtener más información sobre el middleware, consulte Middleware de ASP.NET Core y la lista de middleware integrados que se pueden agregar a las aplicaciones.
Para más información sobre las API mínimas, consulte Minimal APIs overview
.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de