В ASP.NET Core компоненты промежуточного программного обеспечения выполняются в определенном порядке для обработки HTTP-запросов и ответов. Порядок добавления промежуточного программного обеспечения в конвейер определяет последовательность их вызова.
Вот несколько методов управления порядком компонентов промежуточного программного обеспечения в ASP.NET Core, а также примеры кода:
-
Используйте метод
UseMiddleware:app.UseMiddleware<Middleware1>(); // Executes first app.UseMiddleware<Middleware2>(); // Executes second app.UseMiddleware<Middleware3>(); // Executes third -
Используйте метод
Useс анонимными функциями:app.Use(async (context, next) => { // Custom logic before invoking next middleware // ... await next.Invoke(); // Custom logic after invoking next middleware // ... }); // Add more middleware using the same pattern -
Используйте метод
UseWhenдля условного выполнения промежуточного программного обеспечения:app.UseWhen(context => context.Request.Path.StartsWithSegments("/api"), appBuilder => { appBuilder.UseMiddleware<ApiMiddleware>(); }); app.UseMiddleware<DefaultMiddleware>(); // Executes for all requests -
Используйте метод
Map, чтобы разветвить конвейер промежуточного программного обеспечения на основе пути запроса:app.Map("/admin", adminApp => { adminApp.UseMiddleware<AdminMiddleware>(); }); app.Map("/api", apiApp => { apiApp.UseMiddleware<ApiMiddleware>(); }); app.UseMiddleware<DefaultMiddleware>(); // Executes for all other requests -
Используйте класс
UseMiddlewareExtensionsдля вставки промежуточного программного обеспечения в определенные позиции:app.UseMiddleware<Middleware1>(); // Executes first app.UseMiddleware<Middleware3>(); // Executes third app.UseMiddlewareBefore<Middleware3>(typeof(Middleware2)); // Inserts Middleware2 after Middleware1
Это всего лишь несколько примеров того, как можно управлять порядком промежуточного программного обеспечения в ASP.NET Core. Фактическая реализация может отличаться в зависимости от ваших конкретных требований.