Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# ASP.NET Core में Startup क्लास के Configure() मेथड का उपयोग क्या है?

Configure मेथड ASP.NET Core एप्लिकेशन के Startup क्लास में मौजूद होता है। यह वह स्थान है जहां आप IApplicationBuilder इंस्टेंस का उपयोग करके अपने एप्लिकेशन के रिक्वेस्ट पाइपलाइन को कॉन्फिगर कर सकते हैं, जो बिल्ट-इन IoC कंटेनर द्वारा प्रदान किया जाता है।

Configure मेथड के पैरामीटर्स

Configure मेथड में डिफ़ॉल्ट रूप से ये तीन पैरामीटर्स होते हैं:

  • IApplicationBuilder: एप्लिकेशन के रिक्वेस्ट पाइपलाइन को कॉन्फिगर करने के लिए तंत्र प्रदान करने वाली क्लास को परिभाषित करता है
  • IWebHostEnvironment: उस वेब होस्टिंग एनवायरनमेंट के बारे में जानकारी प्रदान करता है जिसमें एप्लिकेशन चल रहा है
  • ILoggerFactory: लॉगिंग के लिए फैक्टरी (वैकल्पिक, अक्सर DI के माध्यम से इंजेक्ट किया जाता है)

महत्वपूर्ण: एक्जीक्यूशन क्रम

रनटाइम पर, ConfigureServices मेथड Configure मेथड से पहले कॉल होता है। यह IoC कंटेनर के साथ कस्टम सर्विसेज रजिस्टर करने के लिए है जिनका उपयोग Configure मेथड में किया जा सकता है।

आधुनिक ASP.NET Core (.NET 6+) Configure उदाहरण

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // डेवलपमेंट एनवायरनमेंट में डेवलपर एक्सेप्शन पेज
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseSwagger();
        app.UseSwaggerUI();
    }
    else
    {
        // प्रोडक्शन एरर हैंडलिंग
        app.UseExceptionHandler("/Error");
        app.UseHsts(); // HTTP Strict Transport Security
    }

    // HTTPS रीडायरेक्शन
    app.UseHttpsRedirection();
    
    // स्टेटिक फाइल्स सर्व करना (wwwroot फोल्डर से)
    app.UseStaticFiles();
    
    // रूटिंग मिडलवेयर
    app.UseRouting();
    
    // CORS (अगर कॉन्फिगर किया गया है)
    app.UseCors("MyPolicy");
    
    // ऑथेंटिकेशन और ऑथराइजेशन
    app.UseAuthentication();
    app.UseAuthorization();
    
    // एंडपॉइंट रूटिंग
    app.UseEndpoints(endpoints =>
    {
        // कंट्रोलर रूट्स
        endpoints.MapControllers();
        
        // रेजर पेजेस
        endpoints.MapRazorPages();
        
        // हेल्थ चेक्स
        endpoints.MapHealthChecks("/health");
        
        // सिग्नलआर हब्स
        endpoints.MapHub("/chathub");
        
        // डिफ़ॉल्ट फॉलबैक
        endpoints.MapFallbackToPage("/_Host");
    });
}

मिडलवेयर ऑर्डर का महत्व

मिडलवेयर्स का क्रम महत्वपूर्ण है क्योंकि प्रत्येक मिडलवेयर अगले को कॉल करने से पहले और बाद में ऑपरेशन कर सकता है:

// सही क्रम (सामान्य दिशानिर्देश)
app.UseExceptionHandler("/Error");      // 1. सबसे पहले - अनहैंडल्ड एक्सेप्शन्स पकड़ता है
app.UseHsts();                          // 2. सुरक्षा हेडर्स
app.UseHttpsRedirection();              // 3. HTTPS रीडायरेक्ट
app.UseStaticFiles();                   // 4. स्टेटिक फाइल्स (रूटिंग से पहले)
app.UseRouting();                       // 5. रूटिंग रिज़ॉल्यूशन
app.UseCors();                          // 6. CORS पॉलिसी
app.UseAuthentication();                // 7. ऑथेंटिकेशन (आइडेंटिटी स्थापित करता है)
app.UseAuthorization();                 // 8. ऑथराइजेशन (पर्मिशन चेक करता है)
app.UseEndpoints(...);                  // 9. एंडपॉइंट एक्जीक्यूशन (अंतिम)

कॉन्डिशनल मिडलवेयर पाइपलाइन

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // एनवायरनमेंट-विशिष्ट मिडलवेयर
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else if (env.IsStaging())
    {
        app.UseStagingExceptionHandler();
    }
    else
    {
        app.UseProductionExceptionHandler();
    }
    
    // ब्रांचिंग - विशिष्ट पथ के लिए अलग पाइपलाइन
    app.Map("/api", apiApp =>
    {
        apiApp.UseAuthentication();
        apiApp.UseAuthorization();
        apiApp.UseEndpoints(e => e.MapControllers());
    });
    
    app.Map("/health", healthApp =>
    {
        healthApp.Run(async ctx => 
        {
            ctx.Response.ContentType = "application/json";
            await ctx.Response.WriteAsync("{\"status\":\"healthy\"}");
        });
    });
    
    // मुख्य UI पाइपलाइन
    app.UseStaticFiles();
    app.UseRouting();
    app.UseAuthentication();
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapRazorPages();
        endpoints.MapFallbackToPage("/_Host");
    });
}

IApplicationBuilder के मुख्य मेथड्स

मेथडविवरण
Use()इनलाइन मिडलवेयर जोड़ता है
UseMiddleware<T>()टाइप्ड मिडलवेयर क्लास जोड़ता है
Run()टर्मिनल मिडलवेयर जोड़ता है
Map()पथ-आधारित ब्रांच बनाता है
MapWhen()शर्त-आधारित ब्रांच बनाता है
UseEndpoints()एंडपॉइंट रूटिंग कॉन्फिगर करता है

नोट: .NET 6+ में मिनिमल APIs के साथ, Startup क्लास वैकल्पिक है और कॉन्फिगरेशन सीधे Program.cs में होता है।

  1. C# ASP.NET WebAPI में Authorize एट्रिब्यूट का उपयोग क्या है? C# ASP.NET WebAPI में Authorize एट्रिब्यूट का उपयोग क्या है?

    ऑथराइजेशन यह तय करने की प्रक्रिया है कि ऑथेंटिकेटेड यूजर को किसी विशिष्ट रिसोर्स (Web API रिसोर्स) पर एक्शन करने की अनुमति है या नहीं। उदाहरण के लिए, डेटा प्राप्त करने और पोस्ट करने की अनुमति ऑथराइजेशन का हिस्सा है। ऑथराइजेशन प्रोसेस कंट्रोलर एक्शन मेथड के एक्जीक्यूट होने से पहले होता है, जो आपको यह

  1. C# ASP.NET MVC में ChildActionOnly एट्रिब्यूट का उपयोग क्या है? C# ASP.NET MVC में ChildActionOnly एट्रिब्यूट का उपयोग क्या है?

    Child Action केवल चाइल्ड रिक्वेस्ट द्वारा एक्सेसिबल होता है। यह URL रिक्वेस्ट्स का जवाब नहीं देगा। यदि कोई प्रयास किया जाता है, तो रनटाइम एरर फेंका जाएगा - Child action is accessible only by a child request। चाइल्ड एक्शन मेथड्स को व्यू से Action() और RenderAction() HTML हेल्पर्स का उपयोग करके चाइल्ड

  1. C# ASP.NET MVC में NonActionAttribute का महत्व क्या है? C# ASP.NET MVC में NonActionAttribute का महत्व क्या है?

    NonAction एट्रिब्यूट का उपयोग तब किया जाता है जब हम एक कंट्रोलर में एक पब्लिक मेथड चाहते हैं लेकिन उसे एक्शन मेथड के रूप में ट्रीट नहीं करना चाहते। एक एक्शन मेथड एक कंट्रोलर में एक पब्लिक मेथड है जिसे URL का उपयोग करके इनवोक किया जा सकता है। इसलिए, डिफ़ॉल्ट रूप से, यदि कंट्रोलर में कोई पब्लिक मेथड ह