Global.asax, App_Start i HTTP Životni Ciklus

Modul 1 - Lekcija 1.2

Razumijevanje konfiguracije aplikacije i kako MVC obrađuje HTTP zahtjeve

📚 Nivo: Početni | 🎯 Praktični primjeri: 5

🌐 Global.asax (Globalni Event Handleri)

Global.asax je poseban fajl koji nasljeđuje HttpApplication. Definiše događaje na nivou cijele aplikacije.

Ključne Metode:

  • Application_Start() - Samo jednom kada aplikacija startuje. Idealno za registraciju ruta i konfiguracija (App_Start).
  • Application_BeginRequest() - Prije svakog HTTP zahtjeva (Logovanje, default Auth).
  • Application_Error() - Neobrađene greške (Preusmjeravanje na Error Page).
  • Application_End() - Gašenje aplikacije.
📖 Pogledaj Detaljno Objašnjenje →

📁 App_Start Folder

Sadrži klase koje konfigurišu različite aspekte aplikacije prilikom pokretanja.

1. RouteConfig.cs

Definira obrasce URL-ova i njihovo mapiranje na Controller/Action (npr. {controller}/{action}/{id}).

2. BundleConfig.cs

Spajanje (Bundling) i smanjivanje (Minification) CSS/JS fajlova. Povećava brzinu aplikacije.

3. FilterConfig.cs

Registruje globalne filtere, poput HandleErrorAttribute ili globalne autorizacije.

📖 Pogledaj Detaljno Objašnjenje →

⚙️ Web.config (Konfiguracija Aplikacije)

XML fajl koji sadrži srž sistemskih postavki MVC okruženja.

Glavne sekcije:

  • <connectionStrings> - Povezivanje s bazama.
  • <appSettings> - Key-Value prilagođene varijable.
  • <system.web> - Postavke servera i frameworka.
📖 Pogledaj Detaljno Objašnjenje →

🔌 connectionStrings

Omogućava aplikaciji pristup podacima.


                    <connectionStrings>
                    <!-- Preporuka za produkciju -->
                    <add name="StateAuthDB"
                    connectionString="Server=sql-prod;Database=DB;Integrated Security=True;"
                    providerName="System.Data.SqlClient" />
                    </connectionStrings>

🛡️ Sigurnost (Javne Institucije)

  • ✅ UVIJEK koristite Windows Authentication (Integrated Security=True) u produkciji!
  • 🚫 NIKADA ne koristite plain-text passworde (SQL Auth bez enkripcije)!
📖 Pogledaj Detaljno Objašnjenje →

🔑 appSettings (Custom Postavke)

Definiranje Key-Value parova, poput email parametara, API ključeva i postavki sistema.


                    <appSettings>
                    <add key="InstitutionName" value="Ministarstvo Finansija" />
                    <add key="EnableAuditLog" value="true" />
                    </appSettings>

                    // U C# Kodu
                    string naziv = ConfigurationManager.AppSettings["InstitutionName"];
                    bool isAudit = bool.Parse(ConfigurationManager.AppSettings["EnableAuditLog"]);

Najbolja praksa: Koristiti Helper klase (npr. ConfigHelper.GetBool) za null-safe čitanje.

📖 Pogledaj Detaljno Objašnjenje →

🛠️ system.web (Ključne postavke)

Sekcija Značenje
<compilation debug="true"> Prikazuje detaljne greške. MORA biti "false" u produkciji!
<customErrors mode="RemoteOnly"> Preusmjerava na prilagođene error (404/500) stranice za vanjske korisnike.
<sessionState mode="InProc"> Čuva session. "SQLServer" ili "StateServer" mode je obavezan za Load Balancere!
<httpRuntime enableVersionHeader="false"> Krije verziju servera. Sigurnosna praksa!
<pages validateRequest="true"> Sprečava jednostavne XSS napade presretanjem rizičnih HTML unosa.
📖 Pogledaj Detaljno Objašnjenje →

🔄 HTTP Životni Ciklus MVC-a

  1. 📡 HTTP Zahtjev stiže na IIS.
  2. ⚙️ Application_BeginRequest u Global.asax se izvršava.
  3. 🗺️ Routing pronalazi Controller/Action.
  4. 🏗️ Controller Instanciranje.
  5. 🎭 Action Method Execution (skupa sa Filterima pred/nakon).
  6. 🖌️ View Rendering u HTML sintaksu.
  7. 🧹 Application_EndRequest se izvršava.
  8. 📨 Odgovor (Response) ide klijentu.

Naspram WebForms: Ovaj ciklus je strogo lineran. Nema zamršenih postback eventova i lifecycle problema!

📖 Pogledaj Detaljno Objašnjenje →

✅ Zaključak

U ovoj lekciji naučeno je:

  • Global.asax rukuje sistemskim HTTP zahtjevima i početkom/krajem aplikacije.
  • App_Start konfiguriše uvezivanje skripti, rute, i filtere.
  • Web.config je srž sa posebnim akcentom na sigurnosne "Production" prakse.
  • ✅ MVC Lifecycle je lineran i predvidljiv.

📚 Sljedeći Modul

U Modulu 2 prelazimo na rad sa podacima korištenjem Entity Framework 6 - Upoznaćemo se sa Code-First i Database-First pristupima!