5

在 Visual Studio (.Net MVC4) 中调试时,是否可以一次查看所有Controller.Session键/值?我可以通过键入QuickWatch 并展开“结果视图”来查看所有键。Session例如:

    Results View
    [0] "IsPlaced"  
    [1] "FromSLC"   
    [2] "PersonalId"    
    [3] "FullName"  

我知道可以像这样检查单个值,但无法同时获取所有键和值的列表。这肯定是可能的,无论是在 QuickWatch 还是在即时窗口中?

4

3 回答 3

2

想法A 您可以在会话对象上创建一个扩展方法,以您需要的方式打印其内容。然后在即时窗口中调用此方法或向其添加监视。

想法 B 您还可以创建一个自定义可视化工具,按照您的意图显示您的会话对象。这里有一个基础指南:http: //msdn.microsoft.com/en-us/library/ms164759.aspx

这也意味着将代码添加到您的项目中,但就像扩展方法一样,它将保留在一个非常明确的位置。

于 2013-04-16T12:54:45.360 回答
2

我没有看到一个简单的方法来做到这一点,最好的办法是编写一个方法,接收 HttpSessionState 并将其转换为字典,然后从 QuickWatch 窗口调用该方法。一个更复杂的解决方案是为 HttpSessionState编写您自己的DebuggerTypeProxy并将其放入您的 autoexp.cs文件中,这种方法的优点是它可以跨不同的应用程序工作,并且不会强迫您使用以下代码弄脏您的解决方案仅用于调试。

于 2013-04-17T07:12:35.920 回答
-2

尝试添加命名空间:

using System.Diagnostics;

在创建会话的页面中,添加以下内容:

Debug.Write(Session["your session value or text"]);
于 2014-03-25T10:41:08.230 回答