Middleware en aplicaciones de API mínimas
Nota:
Esta no es la versión más reciente de este artículo. Para la versión actual, consulte la versión de .NET 9 de este artículo.
Advertencia
Esta versión de ASP.NET Core ya no se admite. Para obtener más información, consulta la Directiva de soporte técnico de .NET y .NET Core. Para la versión actual, consulta la versión .NET 8 de este artículo.
Importante
Esta información hace referencia a un producto en versión preliminar, el cual puede sufrir importantes modificaciones antes de que se publique la versión comercial. Microsoft no proporciona ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.
Para la versión actual, consulte la versión de .NET 9 de este artículo.
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
.