Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在Visual Studio中调试时如何查看所有会话键/值对?_.net_Asp.net Mvc_Visual Studio_Debugging_Session - Fatal编程技术网

.net 在Visual Studio中调试时如何查看所有会话键/值对?

.net 在Visual Studio中调试时如何查看所有会话键/值对?,.net,asp.net-mvc,visual-studio,debugging,session,.net,Asp.net Mvc,Visual Studio,Debugging,Session,在Visual Studio(.Net MVC4)中调试时,是否可以同时查看所有键/值?通过在QuickWatch中键入Session并展开“结果视图”,我可以查看所有键。例如: 我知道可以检查单个值,但无法同时获得所有键和值的列表。当然,这必须是可能的,无论是在QuickWatch还是在即时窗口中?Idea 您可以在会话对象上创建一个扩展方法,以您需要的方式打印其内容。然后在即时窗口中调用此方法或向其添加手表 创意B 您还可以创建一个自定义可视化工具,按照您的意愿显示会话对象。 这里有一个基本

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

我知道可以检查单个值,但无法同时获得所有键和值的列表。当然,这必须是可能的,无论是在QuickWatch还是在即时窗口中?

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

创意B 您还可以创建一个自定义可视化工具,按照您的意愿显示会话对象。 这里有一个基本指南:


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

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

尝试添加命名空间:

using System.Diagnostics;
在创建会话的页面中,添加以下内容:

Debug.Write(Session["your session value or text"]);

谢谢,但是我不愿意修改代码,因为这只是为了调试。我担心除了添加一些代码之外没有其他选择。有一个类包含用于调试的扩展方法有什么错呢?原则上没有什么错。但我正在做一个敏捷项目,有一个积极的时间表。所有签入必须与工作项和单元测试相关联。我宁愿避开这些开销。[好的,你可能会说这样的扩展对整个团队都有好处,因此值得这么做,但是你可能会说,对于很多有好处的事情,但实际上没有时间去做;-)]我讨厌代码签入与工作项相关联的所有频繁规则。我觉得它阻止人们一点一点地清理代码。另一种绕过规则的方法是使用一个名为“代码清理”的始终打开的工作项,并在此项下转储所有非项目驱动的重构。这并不能解决OP的问题。
Debug.Write(Session["your session value or text"]);