HttpModules ได้รับการกำหนดค่าผ่าน web.config หรือ global.asaxDeveloper ไม่มีการควบคุมลำดับการดำเนินการ
เนื่องจากลำดับของโมดูลจะขึ้นอยู่กับเหตุการณ์วงจรชีวิตของแอปพลิเคชันเป็นหลัก ลำดับการดำเนินการยังคงเหมือนเดิมสำหรับคำขอและการตอบกลับ
HttpModules ช่วยให้คุณแนบโค้ดเฉพาะกับเหตุการณ์ของแอปพลิเคชันได้ HttpModules เชื่อมโยงกับ System.web
มิดเดิลแวร์ได้รับการกำหนดค่าในโค้ด Startup.cs แทนที่จะเป็นไฟล์ web.config (จุดเข้าใช้งานสำหรับแอปพลิเคชัน)
ต่างจาก HttpModules ตรงที่มีการควบคุมอย่างเต็มรูปแบบว่าสิ่งใดที่จะถูกดำเนินการและในลำดับใด ตามที่พวกเขาจะดำเนินการตามลำดับที่เพิ่มเข้ามา
ลำดับของมิดเดิลแวร์สำหรับการตอบกลับเป็นสิ่งที่ตรงกันข้ามกับคำขอ
มิดเดิลแวร์ไม่ขึ้นกับเหตุการณ์เหล่านี้
Middlewares เป็นอิสระจากโฮสต์
สร้างขึ้นใน Middlewares ของ Asp.Net core
การตรวจสอบสิทธิ์ ให้การสนับสนุนการตรวจสอบสิทธิ์
CORS กำหนดค่าการแบ่งปันทรัพยากรข้ามต้นทาง
การกำหนดเส้นทาง กำหนดและจำกัดเส้นทางคำขอ
เซสชัน ให้การสนับสนุนสำหรับการจัดการเซสชันผู้ใช้
การวินิจฉัย รวมการสนับสนุนหน้าข้อผิดพลาดและข้อมูลรันไทม์
ตัวอย่าง
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 } }
// วิธีการขยายที่ใช้เพื่อเพิ่มมิดเดิลแวร์ไปยังไปป์ไลน์คำขอ HTTP
public static class MyMiddlewareExtensions{ public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder builder){ return builder.UseMiddleware<MyMiddleware>(); } }
//เพิ่มมิดเดิลแวร์ที่กำหนดเองในไปป์ไลน์คำขอโดยใช้วิธีการขยายตามที่แสดงด้านล่าง
public void Configure(IApplicationBuilder app, IHostingEnvironment env){ app.UseMiddleware<MyMiddleware>() app.Run(async (context) =>{ await context.Response.WriteAsync("Hello World!"); }); }