簡體   English   中英

獲取所有執行的函數的列表,如asp.net中的調用堆棧

[英]getting the list of all functions executed like call stack in asp.net

我在調試網站中遇到的問題之一時遇到了麻煩。 這就是問題。 我有一個網頁,其中包含員工的照片和與該員工有關的信息。 當用戶登錄我們的網站時,我們將在會話中存儲員工的詳細信息。 我正在為員工的照片設置圖像URL,如下所示。

imgEEPhoto.ImageUrl = imgPhoto.aspx?Company=XXXX&Empno=YYYY. 

在imgPhoto.aspx頁面中,我正在檢查該用戶的會話是否有效。 當我登錄到包含員工照片的頁面時,有時不會顯示照片。 這是因為我正在檢查imgPhoto.aspx頁面中的會話是否仍在運行。 有時會話還活着,有時會話還沒有活着。 好像有一些函數將會話異步設置為null。 我不知道如何跟蹤該功能。 因此,我認為在imgPhoto.aspx頁面中,如果可以獲得到目前為止已執行的所有功能的列表,則可以跟蹤正在重置會話的功能。 有沒有辦法找到這個?

如果沒有其他方法可以調試此問題,請告訴我。

編輯:

imgPhoto.aspx頁面獲取公司和empno作為查詢字符串參數。 然后頁面獲取基於company和empno的二進制數據,並使用Response.BinaryWrite()顯示照片。 會話檢查是此功能的開始。 因此,在調用此函數之前以及主頁中所有函數結束之后的某個地方,會話都將超時。 其實我不確定它是否超時,因為我可以打印sessionid。 但是我無法訪問會話中存儲的變量。

如果我在函數內部打印調用棧,它將給出在該頁面內執行的函數列表。 它沒有提供在該功能之前執行的所有功能。

.NET中沒有內置的功能可以列出所有被調用的函數,盡管您可以在特定點打印調用堆棧(就像例外一樣)。

如果這是您要采用的路線,建議您尋找一個代碼覆蓋率分析器。

如果我了解問題所在,則imgphoto.aspx正在構建包含URL的字符串,然后將其發送回,對嗎? 如果是這樣,如果您將imgPhoto.aspx修改為始終為您明確存在的圖像返回硬編碼URL,那么您是否仍然有問題?

我首先要排除的是,您並非無意中發送了格式錯誤的url或不存在的照片的url。 我將首先嘗試此操作,而不檢查會話,並且如果您無法重現問題(即始終有效),則添加會話檢查並仍然發送回靜態網址,看看是否可以通過這種方式重復進行。

我總是首先嘗試排除“簡單”的事情-也許您已經做到了?

聽起來好像您的問題是斷斷續續的,也許您的會話狀態正在超時? 您可以在Gloabal.asax文件的Session_End方法中記錄會話結束的時間,以准確了解會話何時終止。 您可以嘗試提高會話超時(默認為20分鍾)的分辨率,如下所示:

可以在Web.config文件中設置Timeout屬性

<SessionState timeout = "30" />

或者,您可以直接使用應用程序代碼設置Timeout屬性值

Session.Timeout = 30

暫無
暫無

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

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