2010-04-26 67 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

相关问题