Middleware Ordering और Built-in Middleware
authentication, routing, CORS और exception handling के लिए middleware का सही क्रम समझें।
Middleware Ordering और Built-in Middleware, CoddyKit पर C# अकादमी का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C# अकादमी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C# अकादमी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
क्रम क्यों महत्वपूर्ण है
ASP.NET Core मिडलवेयर उसी सटीक क्रम में चलता है, जिस क्रम में उसका पंजीकरण किया गया हो। गलत क्रम से सुरक्षा खामियाँ, प्रदर्शन संबंधी समस्याएँ या गलत व्यवहार हो सकता है — उदाहरण के लिए, मार्ग-निर्धारण प्राधिकरण से पहले होना चाहिए और प्राधिकरण एंडपॉइंट के निष्पादन से पहले।
अनुशंसित मिडलवेयर क्रम
Microsoft अनुशंसित क्रम का दस्तावेज़ीकरण करता है। इससे अलग क्रम अपनाने पर ऐसी समस्याएँ पैदा होती हैं जिन्हें ढूँढना कठिन होता है। यहाँ उत्पादन-स्तर के ASP.NET Core API का मानक क्रम दिया गया है।
// Recommended order:
app.UseExceptionHandler(); // 1. Catch all exceptions
app.UseHsts(); // 2. HTTP Strict Transport Security
app.UseHttpsRedirection(); // 3. Redirect HTTP to HTTPS
app.UseStaticFiles(); // 4. Serve static assets
app.UseRouting(); // 5. Match route patterns
app.UseCors(); // 6. Cross-Origin
app.UseAuthentication(); // 7. Who are you?
app.UseAuthorization(); // 8. Are you allowed?
app.UseRateLimiter(); // 9. Throttle
app.UseOutputCache(); // 10. Cache responses
// Map endpoints here
app.MapControllers();
app.Run();अपवाद-प्रबंधन सबसे पहले
अपवाद-प्रबंधन मिडलवेयर सबसे पहले, यानी सबसे बाहरी, होना चाहिए, ताकि वह उसके बाद चलने वाले सभी मिडलवेयर और एंडपॉइंट से आने वाले अपवादों को पकड़ सके।
// Development: detailed error page
if (app.Environment.IsDevelopment())
app.UseDeveloperExceptionPage();
else
{
// Production: generic error page + structured response
app.UseExceptionHandler("/error");
app.UseHsts();
}
// OR: use ProblemDetails globally (recommended .NET 8+)
builder.Services.AddProblemDetails();
app.UseExceptionHandler();
// All unhandled exceptions -> RFC 7807 ProblemDetails JSONमार्ग-निर्धारण से पहले स्थिर फ़ाइलें
स्थिर फ़ाइलें (UseStaticFiles) मार्ग-निर्धारण से पहले आनी चाहिए। स्थिर फ़ाइल भेजना शृंखला को बीच में रोक देता है — /css/main.css के लिए प्रमाणीकरण या मार्ग-निर्धारण चलाने की आवश्यकता नहीं होती।
app.UseStaticFiles(); // serves wwwroot/* without going through auth
app.UseRouting(); // expensive: runs route matching
// If you put UseStaticFiles AFTER UseRouting, the route
// matcher runs unnecessarily for every .js/.css request.
// Serve static files first for better performance.प्राधिकरण से पहले प्रमाणीकरण
UseAuthentication को UseAuthorization से पहले चलना चाहिए। प्रमाणीकरण HttpContext.User में उपयोगकर्ता की जानकारी भरता है; प्राधिकरण उस उपयोगकर्ता की जाँच नीतियों के विरुद्ध करता है।
// WRONG ORDER — authorization runs before user is populated:
app.UseAuthorization(); // user is null → everything allowed!
app.UseAuthentication(); // too late
// CORRECT:
app.UseAuthentication(); // populates context.User
app.UseAuthorization(); // checks context.User against policiesप्रमाणीकरण से पहले CORS
CORS मिडलवेयर को प्रमाणीकरण से पहले चलना चाहिए, ताकि प्री-फ़्लाइट OPTIONS अनुरोधों को प्रमाणीकरण शीर्षलेखों की आवश्यकता के बिना संभाला जा सके।
builder.Services.AddCors(opts =>
opts.AddPolicy("Frontend", p =>
p.WithOrigins("https://myapp.com")
.AllowAnyHeader()
.AllowAnyMethod()));
app.UseRouting();
app.UseCors("Frontend"); // before auth — handles OPTIONS pre-flight
app.UseAuthentication();
app.UseAuthorization();सामान्य अंतर्निर्मित मिडलवेयर
ASP.NET Core में कई अंतर्निर्मित मिडलवेयर घटक उपलब्ध होते हैं। प्रत्येक घटक क्या करता है, यह जानने से आपको समझने में सहायता मिलती है कि उनका उपयोग कब और कैसे करना है।
// Compression: compresses responses (must be before static files)
builder.Services.AddResponseCompression();
app.UseResponseCompression();
// Request localization: sets culture from Accept-Language header
builder.Services.AddLocalization();
app.UseRequestLocalization();
// Health checks: /health endpoint
builder.Services.AddHealthChecks();
app.MapHealthChecks("/health");
// Forwarded headers: trust X-Forwarded-For from reverse proxy
app.UseForwardedHeaders();रूटिंग मिडलवेयर की गहन जानकारी
UseRouting() आने वाले अनुरोध का मिलान किसी रूट पैटर्न से करता है और मिलान को HttpContext में संग्रहीत करता है। इसके बाद UseEndpoints() (या MapXxx()) मिले हुए एंडपॉइंट को निष्पादित करता है।
app.UseRouting(); // matches route, stores in context
// Between UseRouting and Map*: middleware can read route data
app.Use(async (ctx, next) =>
{
var endpoint = ctx.GetEndpoint();
var routeName = endpoint?.DisplayName;
Console.WriteLine($"Matched: {routeName}");
await next(ctx);
});
// All auth and other middleware go here
app.UseAuthentication();
app.UseAuthorization();
// Execute the matched endpoint
app.MapControllers();
app.MapGet("/", () => "Home");प्रतिक्रिया संपीड़न का स्थान
प्रतिक्रिया संपीड़न को स्थिर फ़ाइलों और रूटिंग से पहले रखना चाहिए, ताकि सामग्री तैयार होने से पहले संपीड़ित आउटपुट लिखा जा सके। इसे अपवाद प्रबंधन के तुरंत बाद रखें।
// Correct placement for response compression:
app.UseExceptionHandler();
app.UseResponseCompression(); // before static files
app.UseStaticFiles(); // compressed static files
app.UseRouting();
// ... rest of pipelineवास्तविक उदाहरण: पूर्ण उत्पादन प्रवाह
सभी सुझावों को सही क्रम वाली, सुरक्षित मिडलवेयर संरचना में संयोजित करने वाला एक संपूर्ण उत्पादन प्रवाह।
var app = builder.Build();
if (app.Environment.IsDevelopment())
app.UseDeveloperExceptionPage();
else { app.UseExceptionHandler(); app.UseHsts(); }
app.UseResponseCompression();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseCors("AllowFrontend");
app.UseAuthentication();
app.UseAuthorization();
app.UseRateLimiter();
app.UseOutputCache();
app.MapHealthChecks("/health").AllowAnonymous();
app.MapControllers();
app.Run();त्वरित जाँच
मिडलवेयर प्रवाह में UseAuthentication को UseAuthorization से पहले क्यों आना चाहिए?
पुनरावृत्ति: मिडलवेयर क्रम और अंतर्निर्मित मिडलवेयर
मुख्य बातें:
- सबसे पहले अपवाद प्रबंधन, रूटिंग से पहले स्थिर फ़ाइलें, प्राधिकरण से पहले प्रमाणीकरण और प्रमाणीकरण से पहले CORS
- अधिकतम प्रभाव के लिए प्रतिक्रिया संपीड़न को आरंभ में रखें (स्थिर फ़ाइलों से पहले)
- UseRouting + UseAuthorization + Map* — इनके बीच का मिडलवेयर रूट डेटा पढ़ सकता है
- अंतर्निर्मित विकल्प: UseHsts, UseHttpsRedirection, UseStaticFiles, UseRateLimiter, UseOutputCache
- मिले हुए रूट की जानकारी पढ़ने के लिए UseRouting और MapXxx के बीच
ctx.GetEndpoint()जाँचें
एआई शिक्षक के साथ C# सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 93
- पाठ
- 346
अक्सर पूछे जाने वाले प्रश्न
क्या “Middleware Ordering और Built-in Middleware” पाठ निःशुल्क है?
हाँ—“Middleware Ordering और Built-in Middleware” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C# अकादमी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C# अकादमी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Middleware Ordering और Built-in Middleware” में मैं क्या सीखूँगा?
authentication, routing, CORS और exception handling के लिए middleware का सही क्रम समझें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C# अकादमी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C# अकादमी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C# अकादमी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“Middleware Ordering और Built-in Middleware” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C# अकादमी पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C# अकादमी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- ASP.NET Core Pipeline का अवलोकन
- Custom Middleware लिखना
- Short-Circuiting और Branching
- Middleware Ordering और Built-in Middleware