ASP.NET Core MVC 生命週期介紹
ASP.NET Core MVC 生命週期是描述應用程式從開始到結束中間所經過的週期事件,從接收到 Http 要求時啟動服務,最後回傳 Http 至用戶端瀏覽器上。
ASP.NET Core MVC 生命週期與傳統 ASP.NET MVC 生命週期不太一樣,傳統 ASP.NET MVC 是繼承 HttpApplication 做為網站起始點。而 ASP.NET Core MVC 的起始點跟 Console 比較像似,從 Main() 為網站起始點。
下面一張圖描述 ASP.NET Core MVC 生命週期的過程。
網站從 Http 接收到需求後,依需求路徑啟動對應的 Routing,然後由指定的 Controller 處理需求內容。
在 Controller 內由 Action 調用方法事件,然後進行權限、篩選檢查,呼叫 Model 處理資料邏輯,最後產出結果再轉由 View 顯示畫面至前端瀏覽器。
Contents
啟動程式碼
在 ASP.NET Core MVC 專案內有一個 Program.cs,裡面是專案啟動後最先執行的語法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run(); |
在啟動程式碼中分別載入了不同元件,包含 MVC、Routing、權限等等,當載入完成後,最後由 app.Run(); 將網站啟動。
Controller 生命週期事件
Controller 是 MVC 中的核心元件,負責接收需求、處理邏輯,當生命週期進入 Controller 與離開 Controller 時,都會觸發生命週期事件,可以善用 Controller 的生命週期事件,將一些商業邏輯寫在這裡。
在繼承 Controller 的類別中,有 3 個生命週期事件可以使用:
OnActionExecuting: 在進入 Action 之前觸發。
OnActionExecuted: 在離開 Action 之後觸發。
OnActionExecutionAsync: 在進入 Action 之前觸發,但是為非同步模式。
有關 ASP.NET Core MVC 更詳細的生命週期介紹,可以看官方的說明喔。
相關學習文章
如果你在學習上有不懂的地方,需要諮詢服務,可以參考站長服務,我想辨法解決你的問題
如果文章內容有過時、不適用或錯誤的地方,幫我在下方留言通知我一下,謝謝