HttpModules dikonfigurasikan melalui web.config atau global.asax Pembangun tidak mempunyai kawalan ke atas perintah pelaksanaan.
Oleh kerana susunan modul terutamanya berdasarkan peristiwa kitaran hayat aplikasi. Susunan pelaksanaan permintaan dan respons tetap sama.
HttpModules membantu anda melampirkan kod khusus pada acara aplikasi anda. HttpModules terikat kepada System.web.
Middleware dikonfigurasikan dalam kod Startup.cs, bukan fail web.config (titik masuk Untuk aplikasi)
Tidak seperti HttpModule, anda mempunyai kawalan penuh ke atas perkara yang akan dilaksanakan dan susunan ia dilaksanakan. sebagai Ia dilaksanakan mengikut susunan ia ditambah.
Middleware bertindak balas dalam urutan terbalik permintaan.
Middleware adalah bebas daripada acara ini.
Middleware adalah bebas hos.
perisian tengah teras Asp.Net terbina dalam
Pengesahan Menyediakan sokongan pengesahan.
CORS Konfigurasikan perkongsian sumber merentas domain.
Laluan Tentukan dan hadkan penghalaan permintaan.
Sesi Menyediakan sokongan untuk menguruskan sesi pengguna.
Diagnostik Termasuk sokongan untuk halaman ralat dan maklumat masa jalan.
public class MyMiddleware{ private readonly RequestDelegate _next; private readonly ILogger _logger; public MyMiddleware(RequestDelegate next, ILoggerFactory logFactory){ _next = next; _logger = logFactory.CreateLogger("MyMiddleware"); } public async Task Invoke(HttpContext httpContext){ _logger.LogInformation("MyMiddleware executing.."); await _next(httpContext); // calling next middleware } }
// Kaedah sambungan untuk menambah perisian tengah pada saluran paip permintaan HTTP.
public static class MyMiddlewareExtensions{ public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder builder){ return builder.UseMiddleware<MyMiddleware>(); } }
//Tambah perisian tengah tersuai dalam saluran permintaan dengan menggunakan kaedah sambungan sebagai Seperti yang ditunjukkan di bawah
public void Configure(IApplicationBuilder app, IHostingEnvironment env){ app.UseMiddleware<MyMiddleware>() app.Run(async (context) =>{ await context.Response.WriteAsync("Hello World!"); }); }
Atas ialah kandungan terperinci Bagaimanakah perisian tengah C# ASP.NET Core berbeza daripada HttpModule?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!