C#

[C#] ASP.NET 4.0 WebForms Global.asax ํŒŒ์ผ

hyonie 2025. 2. 28. 17:34

Visual Studio 2019 ์—์„œ ์ƒ์„ฑํ•œ ASP.NET Web Form ์‚ฌ์ดํŠธ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ASP.NET 4.0 WebForms ํ”„๋กœ์ ํŠธ Global.asax ํŒŒ์ผ์„ ๋ถ„์„ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

 

๐Ÿ“‚ ๋ชฉ์ฐจ

     


    Global.asax ์ฝ”๋“œ ๋ถ„์„

    ASP.NET WebForms์—์„œ Global.asax๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ด€๋ฆฌํ•˜๋Š” ํ•ต์‹ฌํŒŒ์ผ์ž…๋‹ˆ๋‹ค.์ด ํŒŒ์ผ์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘, ์ข…๋ฃŒ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ, ์„ธ์…˜ ์‹œ์ž‘/์ข…๋ฃŒ ๋“ฑ์˜ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     

    1.  Application_Start() → ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋  ๋•Œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ

        void Application_Start(object sender, EventArgs e)
        {
            // ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ์‹œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ
            AuthConfig.RegisterOpenAuth();
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }

     

    โœ… ์‹คํ–‰์‹œ์ :

    • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ฒ˜์Œ ์‹œ์ž‘๋  ๋•Œ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋จ
    • ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋˜๊ฑฐ๋‚˜, IIS์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ’€์ด ์žฌ์‹œ์ž‘๋  ๋•Œ ์‹คํ–‰๋จ
    • ์‚ฌ์ดํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์ด ์žˆ์„ ๋•Œ ์‹คํ–‰๋จ

     

    โœ… ์‹คํ–‰๋˜๋Š” ์ž‘์—…:

    • RouteConfig.RegisterRoutes(RouteTable.Routes); → URL ๋ผ์šฐํŒ…์„ ์„ค์ •ํ•˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ
    • ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ, ์บ์‹œ ์ดˆ๊ธฐํ™”, ์ „์—ญ ๋ณ€์ˆ˜ ์„ค์ • ๋“ฑ์˜ ์ž‘์—…์ด ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Œ

     

    2. RouteConfig.cs ํŒŒ์ผ → URL ๋ผ์šฐํŒ… ์„ค์ •

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using Microsoft.AspNet.Membership.OpenAuth;
    using System.Web.Routing;
    using Microsoft.AspNet.FriendlyUrls;
    
    namespace WebSite1
    {
        public static class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.MapPageRoute("HomeRoute", "home", "~/Home.aspx");
    
                routes.MapPageRoute("ProductRoute", "prodictes", "~/ProductDetails.aspx");
    
                routes.MapPageRoute("ContactRoute", "contacts", "~/Contact.aspx");
    
                //routes.EnableFriendlyUrls();
            }
        }
    }

     

    ASP.NET WebForm์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ .aspx ํŒŒ์ผ์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์ด์ง€๋งŒ, MapPageRoute()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž URL์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     

    ๐Ÿ“Œ ์„ค์ •๋œ ๋ผ์šฐํŒ… ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” URL ์‹ค์ œ ํ˜ธ์ถœ๋˜๋Š” ํŽ˜์ด์ง€
    HomeRoute http://localhost:3000/home Home.aspx

    โœ… routes.MapPageRoute()์˜ ์—ญํ• 

    • routes.MapPageRoute("์ด๋ฆ„", "URL ํŒจํ„ด", "๋Œ€์‘๋˜๋Š” ํŽ˜์ด์ง€");
    • /contact ๊ฒฝ๋กœ๋กœ ๋“ค์–ด์˜ค๋ฉด ~/Contact.aspx๋กœ ์—ฐ๊ฒฐ

     


     

    3.  Application_End() → ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ ์‹œ ์‹คํ–‰

     

    void Application_End(object sender, EventArgs e)
    {
        //  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ ์‹œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ
    
    }

     

    โœ… ์‹คํ–‰์‹œ์ :

    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ข…๋ฃŒ๋  ๋•Œ ์‹คํ–‰๋จ
    • ์„œ๋ฒ„๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ IIS์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ’€์ด ์ค‘์ง€๋  ๋•Œ ์‹คํ–‰๋จ
    • ์‚ฌ์ดํŠธ์˜ ๋งˆ์ง€๋ง‰ ์š”์ฒญ ํ›„ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜์„œ(๊ธฐ๋ณธ 20๋ถ„), ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋น„ํ™œ์„ฑ ์ƒํƒœ๊ฐ€ ๋  ๋•Œ

    โœ… ์ฃผ๋กœ ํ•˜๋Š” ์ž‘์—…:

    • ๋กœ๊ทธ ๊ธฐ๋ก (Log Out๊ธฐ๋ก)
    • ๋ฐ์ดํ„ฐ ์ •๋ฆฌ(์บ์‹œ, ์„ธ์…˜ ์‚ญ์ œ)
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ํ•ด์ œ

     

    4. Application_Error() → ์ „์—ญ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

     

     void Application_Error(object sender, EventArgs e)
     {
         // ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ
    
     }

    โœ… ์‹คํ–‰์‹œ์ :

    • ์‚ฌ์ดํŠธ์—์„œ Unhandled Exception(์˜ˆ์™ธ) ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ž๋™ ์‹คํ–‰๋จ

    โœ… ์ฃผ์š” ์—ญํ• :

    • ๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ ์บ์น˜ํ•˜์—ฌ ๋กœ๊น…(log ๊ธฐ๋ก)
    • ์‚ฌ์šฉ์ž์—๊ฒŒ ์—๋Ÿฌ ํŽ˜์ด์ง€ ์ œ๊ณต

     

    โœณ ์˜ˆ์™ธ๋ฅผ ๋กœ๊น…ํ•˜๊ณ  500์—๋Ÿฌ ํŽ˜์ด์ง€๋กœ ์ด๋™

    ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ดํŠธ์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚˜๋ฉด ErrorPage.aspx ๋กœ ์•ˆ๋‚ด๋˜๋„๋ก ์„ค์ •

     void Application_Error(object sender, EventArgs e)
     {
         // ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ
         Exception ex = Server.GetLastError();
         System.Diagnostics.Debug.WriteLine("์—๋Ÿฌ๋ฐœ์ƒ: " + ex.Message);
         Server.ClearError();
         Response.Redirect("~/ErrorPage.aspx");
     }

     

    5. ์ตœ์ข… ์ •๋ฆฌ

     

    Global.asax ํŒŒ์ผ ์™„๋ฒฝ ์ดํ•ด โœ…๐Ÿ”ฅ

    ์ด๋ฒคํŠธ ์‹คํ–‰ ์‹œ์  ์ฃผ์š” ์—ญํ• 
    Application_Start ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ์‹œ(ํ•œ ๋ฒˆ๋งŒ) ์ดˆ๊ธฐํ™”, ๋ผ์šฐํŒ… ์„ค์ •
    Application_End ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ ์‹œ ๋กœ๊ทธ ์ €์žฅ, ์ •๋ฆฌ ์ž‘์—…
    Application_Error ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์˜ค๋ฅ˜ ๋กœ๊น…, ์—๋ŸฌํŽ˜์ด์ง€ ์ด๋™