2012-06-04 21 views
1

在Visual Studio 2010中进行调试时,有没有办法在QuickWatch窗口中查看HttpSessionState的键?C#:枚举QuickWatch窗口中的SessionState键

必须有一个更好的方法,然后退出调试会话,在Session.Contents.Keys对象上编写一个循环,然后逐步执行循环 - 以查看哪些键被定义。

我怀疑我是以一种完全不正确的方式解决这个问题的。提示或建议将不胜感激。

回答

2

HttpSessionStateIEnumerable,所以只要在您正在调试的进程中加载​​System.Core DLL,您就可以在QuickWatch窗口中评估System.Linq.Enumerable.ToArray(System.Linq.Enumerable.Cast<object>(myHttpSessionState))。如果您在看HttpSessionState对象往往myHttpSessionState.Cast<object>().ToArray()

,你可能想尝试BugAid,并确定上述表达式作为Custom Expression上:如果当前的代码文件有一个using System.Linq声明,你可以写一个短的表达HttpSessionState类,所以你不会被迫每次都输入长表达式。

完全披露:我是BugAid的联合创始人。

+0

奇妙的是,虽然我必须做一些不正确的事情。当我使用上面的语句评估我的HttpSessionState变量时,我收到错误:'System.Linq.Enumerable.ToArray (System.Collections.Generic.IEnumerable )'的最佳重载方法匹配'有一些无效的参数。 – xelco52

+0

对不起,我的坏,我忘了你需要一个演员表达。我上面更新了我的答案。 –

+0

谢谢,这太棒了。演员完美演绎 - 更短的Linq语法更棒! – xelco52