.NET MyMVC架構執行Action的流程詳解
在AjaxHandlerFactory的GetHandler方法中,最後將建立一個ActionHandler,這是一個HttpHandler, 它將在管線的第15個步驟中被呼叫(引用部落格【用Asp.net寫自己的服務框架】中的順序)。
注意:AjaxHandlerFactory的GetHandler方法是在第10步驟中呼叫的,第12步就是在準備Session(非進程內模式), 因此,必須在第12步前決定Session的使用方式。
所有的Action程式碼都是在ActionHandler中執行的:
internal class ActionHandler : IHttpHandler{ internal InvokeInfo InvokeInfo; public void ProcessRequest(HttpContext context) { // 调用核心的工具类,执行Action ActionExecutor.ExecuteAction(context, this.InvokeInfo); }
ExecuteAction的實作過程如下:
internal static void ExecuteAction(HttpContext context, InvokeInfo vkInfo) { if( context == null ) throw new ArgumentNullException("context"); if( vkInfo == null ) throw new ArgumentNullException("vkInfo"); // 调用方法 object result = ExecuteActionInternal(context, vkInfo); // 设置OutputCache OutputCacheAttribute outputCache = vkInfo.GetOutputCacheSetting(); if( outputCache != null ) outputCache.SetResponseCache(context); // 处理方法的返回结果 IActionResult executeResult = result as IActionResult; if( executeResult != null ) { executeResult.Ouput(context); } else { if( result != null ) { // 普通类型结果 context.Response.ContentType = "text/plain"; context.Response.Write(result.ToString()); } } }internal static object ExecuteActionInternal(HttpContext context, InvokeInfo info) { // 准备要传给调用方法的参数 object[] parameters = GetActionCallParameters(context, info.Action); // 调用方法 if( info.Action.HasReturn ) return info.Action.MethodInfo.Invoke(info.Instance, parameters); else { info.Action.MethodInfo.Invoke(info.Instance, parameters); return null; } }
前面我不是沒有說呼叫SetResponseCache()的時機嘛,這個時機就是在這裡:執行完Action後。
設定過OutputCache後,就是處理回傳值了。
前面那段程式碼中,還有一句重要的呼叫:
// 准备要传给调用方法的参数object[] parameters = GetActionCallParameters(context, info.Action);
【相關推薦】
1. 特別推薦:「php程式設計師工具箱」V0.1版本下載
2. ASP免費影片教學
###以上是.NET MyMVC架構執行Action的流程詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

大疆尚未確認推出新運動相機的計畫。相反,GoPro 今年似乎將領先其競爭對手,並透露將於 9 月 4 日推出兩款新的運動相機。

自 DJI 發布 Osmo Action 4(亞馬遜售價 299 美元)以來已經過去了近一年。從那時起,該公司開始專注於其他部門,包括新型 RS 相機萬向節。最重要的是,它還推出了各種無人機,例如 Avata

Insta360 發布了一款新的運動相機,這是繼Insta360X4(亞馬遜售價499.99 美元)之後的第二款運動相機,這是繼Insta360X4(亞馬遜售價499.99 美元)之後的第二款運動相機。錄製功能。

某些情況,我們希望在Vuex中進行一些非同步操作, 例如網路請求, 必然是異步的,這個時候怎麼處理呢?下面就給大家介紹Vuex狀態管理之Action異步操作,希望對需要的朋友有所幫助!

GoPro 現在推出了年度運動相機更新。與近年來不同的是,該公司決定發布兩款車型。然而,它並沒有回歸 360 度相機,儘管去年這個時候它曾戲稱它將取代 Max wi

elasticsearch中的絕大部分操作都是透過對應的action,這些action都在action套件中。它的結構如下圖:上圖是action包的部分截圖,這裡面對應著各個功能的action。各個action的包也都非常類似index。這些action的實作也非常類似,都是基礎自action,下圖是indexaction的繼承關係:因為這些action並未真正實現對應的功能,只是一個代理,因此實作上也非常簡單。他們的主要作用是提供新response和request的方法及對應的action

全新 GoPro 運動相機的詳細資訊以及 Hero 13 Black 的相關資訊已在網路上洩露。請注意,據說下麵包含的資訊來自亞馬遜美國列表,該列表現已被刪除

Amazfit GTR 3 Pro 限量版目前在亞馬遜僅售 124.99 美元,比標價 209.99 美元下降了 40%。與標準版的鋁製外殼相比,Amazfit GTR 3 Pro限量版採用了手工拋光染色
