2010-04-26 38 views
8

如果是這樣;我在哪裏可以得到它?是否有ASP.NET會話的Visual Studio調試器可視化工具?

+0

你知道,當你遇到斷點你可以彈出即時調試窗口,鍵入「Page.Session」看到了嗎? – slugster 2010-04-26 10:11:05

+0

是的。我希望有一個可視化工具能夠以一種神奇的方式向我展示會話中每個對象的結構化視圖,這種方式不需要我對我感興趣的按鍵有一個手錶。 我是reverse-工程深度嵌套遺留代碼,並希望設置一個我感興趣的斷點,但不是每個會話訪問。 – 2010-04-26 11:12:56

回答

2

您是否試過this one from Codeproject?將參考文件Microsoft.VisualStudio.DebuggerVisualizers從版本9.0更正爲10.0後,它在vs2010中運行。

安裝文件夾爲:

C:\Program files\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers

+0

不幸的是,SessionVisualizer窗口是模態的,不可停靠,但嘿它的作品!注意:雖然您可以看到列表中所有對象的名稱和類型,但會話對象需要可序列化才能在查看器中顯示數據。便利! – 2011-05-06 13:40:43

2

彼得,你最好集中會話訪問權限。

public class SessionStateBag 
{ 
    private static string SessionPropertyXKey = "SessionPropertyX"; 
    public static int SessionPropertyX 
    { 
     get { return Session[SessionPropertyXKey]; } 
     set { Session[SessionPropertyXKey] = value; } 
    } 

    private static string SessionPropertyYKey = "SessionPropertyY"; 
    public static string SessionPropertyY 
    { 
     get { return Session[SessionPropertyYKey]; } 
     set { Session[SessionPropertyYKey] = value; } 
    } 

    // etc. Try to guess the type of the session property. If you cannot guess it; use object. 
} 

在代碼的其餘部分中,將Session [「xxx」]替換爲上面的SessionStateBag屬性之一。

這可能需要一兩天的時間,但您可以在一個地方訪問所有會話,並且您有能力洞察Session對象有時創建的迷宮。

+0

謝謝,但那不能回答這個問題。我在一個很大的遺留代碼庫中工作,因爲這樣做不太實際,因爲測試覆蓋率很低。 – 2010-04-28 10:59:25

+0

一個代碼庫可以發現/替換多少不會使這個相當簡單的重構?當然,這不是直接回答確切的問題,但在我看來,這是一個很好的建議,可以幫助您改善調試。我自己在一個相當大的代碼庫上工作,如果會話對象對我們來說是一個問題(我們不會大量使用它)我會考慮做這樣的事情 – DannykPowell 2010-05-04 08:08:23

+0

它不像代碼庫沒有被包裹在_any_中測試覆蓋率。例如,錯過密鑰的機會太高。 – 2010-05-09 13:31:57

相關問題