Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung des Prozesses der Aktionsausführung im .NET MyMVC-Framework
In der GetHandler-Methode von AjaxHandlerFactory wird schließlich ein ActionHandler erstellt, bei dem es sich um einen HttpHandler handelt, der im 15. Schritt der Pipeline aufgerufen wird (Zitat der Sequenz im Blog [Schreiben Sie Ihr eigenes Service-Framework mit Asp.net ] ).
Hinweis: Die GetHandler-Methode von AjaxHandlerFactory wird in Schritt 10 aufgerufen und Schritt 12 bereitet die Sitzung vor (Nicht-In-Prozess-Modus). Daher muss die Verwendung von Session vor Schritt 12 entschieden werden.
Alle Aktionscodes werden im ActionHandler ausgeführt:
internal class ActionHandler : IHttpHandler{ internal InvokeInfo InvokeInfo; public void ProcessRequest(HttpContext context) { // 调用核心的工具类,执行Action ActionExecutor.ExecuteAction(context, this.InvokeInfo); }
Der Implementierungsprozess von ExecuteAction ist wie folgt:
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; } }
Ich habe den Aufruf von SetResponseCache( vorher nicht erwähnt ) Timing, dieses Timing ist genau hier: nach der Ausführung der Aktion.
Nachdem der OutputCache festgelegt wurde, ist es an der Zeit, den Rückgabewert zu verarbeiten.
Im vorherigen Code gibt es einen weiteren wichtigen Aufruf:
// 准备要传给调用方法的参数object[] parameters = GetActionCallParameters(context, info.Action);
[Verwandte Empfehlungen]
1 🎜>:Version „php Programmer Toolbox“ V0.1 herunterladen2. Kostenloses ASP-Video-Tutorial
3 >Einstiegsbeispiel für .NET MVC
4. Detaillierte Erläuterung des Prozesses zum Suchen von Aktionen in der MyMVC-Box
5. .NET MyMVC-Framework-Tutorial zum Umgang mit Rückgabewerten
6. .NET MyMVC-Framework-Tutorial zum Zuweisen von Werten auf Methoden
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Prozesses der Aktionsausführung im .NET MyMVC-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!