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!");
});
}