簡體   English   中英

Asp.Net頁面生命周期 - 什么工具(可能是Reflector?)使我能夠查看調用頁面事件及其事件處理程序的順序

[英]Asp.Net page life-cycle - What tool ( perhaps Reflector?) would enable me to view the order in which page events and their event handlers are called

1)我知道有很多網站描述在Asp.Net頁面生命周期中調用事件的順序。 但是還有一個工具,也許是Reflector,它可以讓我自己弄清楚在頁面生命周期中所有頁面的事件和事件處理程序的順序是什么?

2)你會說試圖找出引擎蓋下的確切內容是一個好主意還是浪費時間? 澄清一下 - 我想弄清楚構建控件樹時到底發生了什么 - 因此所有方法調用,控制樹所需的所有事件調用等都需要構建(我想有數百行或者數千行)用於構建控件樹的代碼。

感謝名單

ASP.net Tracing將是我想要的。 它會告訴您何時調用頁面/控件中的每個方法,並且還可以向跟蹤輸出其他數據。 它的主要目的(我猜!)作為調試工具,但我認為這將是綽綽有余告訴你確切的生命周期頁面正在進行。

要打開跟蹤,請將以下內容添加到web.config文件中:

 <trace enabled="true" pageOutput="true" requestLimit="10" traceMode="SortByTime" localOnly="true" />

正如Jim Schubert在評論中指出的那樣,您還可以修改特定頁面的@page指令以啟用跟蹤:

 <%@ Page Title="" Trace="true"......

然后,您可以通過導航到“Trace.axd”來訪問跟蹤詳細信息。 如果您正在使用遠程服務器(即不是本地主機上的Cassini或IIS),請在上面的代碼段中將localonly="true"更改為localonly="false"

具有在WebForms的引擎蓋下發生的事情的理解是非常有用的,它肯定使解決一些古怪和邊緣的情況下輕松很多的。

啟用跟蹤可能有助於您了解頁面生命周期。 您將看到ASP.NET呈現頁面時調用的頁面事件。

試試這個,看看你的頁面底部:

<%@ Page Language="C#" Trace="true"  %>

恕我直言,你應該了解頁面生命周期中發生的事情,開發一個體面的應用程序。 知道只有幫助,不能傷害。 一旦了解,您就可以設計出高性能的應用程序(知道您的應用程序不需要所有模塊)。 看到這個 - 用於asp.net性能調優。

以下是Rikh Strahl的一個很好的低級別解釋。 看看這個圖 ,你可以更好地理解它們。

1)在頁面的構造函數中放置一個斷點,然后單步執行代碼(F10)以查看代碼的運行順序。 或者,在所有事件中放置斷點並查看它們的命中順序。

2)時間浪費的定義取決於您花費的時間以及您需要信息的原因。 通常,您不應該比完成手頭任務所需的深度更深入。 該平台的設計使您無需了解場景背后發生的事情即可使用它。

如果僅僅是為了好奇,那么你只需要決定你有多少時間浪費在它上面。

我知道有很多網站描述了在Asp.Net頁面生命周期中調用事件的順序。 但是還有一個工具,也許是Reflector,它可以讓我自己弄清楚在頁面生命周期中所有頁面的事件和事件處理程序的順序是什么?

是的 - 我認為您應該使用Reflector(或FX Source,或其他反編譯器 - Telerik的JustDecompile也不錯)並通讀Page源(至少是ProcessRequest方法)。 我在4或5年前做過,記下了主要部分,今天仍然提到它。

雖然有圖形,UML圖表和其他人的話很有幫助 - 但沒有什么能像你自己的偽代碼那樣總結它。 這是一個非常簡單的閱讀,並且應該花費<30分鍾來做 - 當你閱讀這個問題的答案時,你可能已經完成了一半。

你會說,試圖找出引擎蓋下的確切內容是一個好主意還是浪費時間?

嗯,顯然有一個限制(在軟件中,總會有另外一個引擎蓋來窺視)。 頁面和控件的完整代碼可能有點令人生畏 - 並且可能會發生變化 - 但閱讀源代碼肯定是了解整體概念的好方法。 沒有必要了解每一行。

有些人從文檔中獲得所需的一切,其他人則更喜歡明確的代碼。 考慮到生命周期事件對於成為一名優秀的WebForms開發人員至關重要,我當然建議您做任何必要的事情,直到您對它們感到滿意為止。

澄清一下 - 我想弄清楚構建控件樹時到底發生了什么 - 因此所有方法調用,控制樹所需的所有事件調用等都需要構建(我想有數百行或者數千行)用於構建控件樹的代碼。

停止想象,只看*。 這並不難,高水平並不是非常復雜,我認為30分鍾會告訴你一點點 - 在這一點上,你可以決定(或不)繼續探索。 我肯定會瀏覽源代碼而不是瀏覽MSDN上的所有文檔以獲得深入的理解(盡管兩者肯定都是有價值的 - 只是以不同的方式)。

* AFAIK,關於查看已發布的源代碼或反編譯版本沒有特別引人注目的法律論據 - 但IANAL,您的權利可能會有所不同,建議在禁止的地方無效等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM