हम स्टार्टअप क्लास के कॉन्फिगर मेथड में IApplicationBuilder इंस्टेंस का उपयोग करके मिडलवेयर को कॉन्फ़िगर कर सकते हैं।
रन () IApplicationBuilder इंस्टेंस पर एक विस्तार विधि है जो एप्लिकेशन के अनुरोध पाइपलाइन में एक टर्मिनल मिडलवेयर जोड़ता है।
रन विधि IApplicationBuilder पर एक विस्तार विधि है और RequestDelegate के पैरामीटर को स्वीकार करती है।
रन विधि के हस्ताक्षर
public static void Run(this IApplicationBuilder app, RequestDelegate handler)
अनुरोध प्रतिनिधि के हस्ताक्षर
public delegate Task RequestDelegate(HttpContext context);
उदाहरण
public class Startup{ public Startup(){ } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){ //configure middleware using IApplicationBuilder here.. app.Run(async (context) =>{ await context.Response.WriteAsync("Hello World!"); }); // other code removed for clarity.. } }
उपरोक्त MyMiddleware फ़ंक्शन एसिंक्रोनस नहीं है और इसलिए जब तक यह निष्पादन पूरा नहीं कर लेता तब तक थ्रेड को ब्लॉक कर देगा। इसलिए, async का उपयोग करके इसे एसिंक्रोनस बनाएं और प्रदर्शन और मापनीयता में सुधार के लिए प्रतीक्षा करें।
public class Startup{ public Startup(){ } public void Configure(IApplicationBuilder app, IHostingEnvironment env){ app.Run(MyMiddleware); } private async Task MyMiddleware(HttpContext context){ await context.Response.WriteAsync("Hello World! "); } }
रन () का उपयोग करके एकाधिक मिडलवेयर कॉन्फ़िगर करें
निम्नलिखित हमेशा पहली रन विधि निष्पादित करेंगे और दूसरी रन विधि तक कभी नहीं पहुंचेंगे
public void Configure(IApplicationBuilder app, IHostingEnvironment env){ app.Run(async (context) =>{ await context.Response.WriteAsync("1st Middleware"); }); // the following will never be executed app.Run(async (context) =>{ await context.Response.WriteAsync(" 2nd Middleware"); }); }
उपयोग करें
एकाधिक मिडलवेयर को कॉन्फ़िगर करने के लिए, उपयोग () एक्सटेंशन विधि का उपयोग करें। यह रन () विधि के समान है सिवाय इसके कि इसमें अगले मिडलवेयर को इनक्वेंस करने के लिए अगला पैरामीटर शामिल है
public void Configure(IApplicationBuilder app, IHostingEnvironment env){ app.Use(async (context, next) =>{ await context.Response.WriteAsync("1st Middleware!"); await next(); }); app.Run(async (context) =>{ await context.Response.WriteAsync("2nd Middleware"); }); }