我有一些 ASP.NET MVC 应用程序的生产 IIS 服务器。我遇到了一些我无法捕获的棘手错误。它链接到会话数据。如何导出/查看/查看此类用户会话?会话存储有默认的 IIS 配置——进程内。
编辑
顺便说一句,我有必要的适当用户会话 ID。
编辑2
好的,伙计们,即使我现在无法导出该数据,您能否指点我一些会话状态服务器或类似的东西,我可以使用它来存储会话数据并进一步查看它?我知道 SQL Server 可以,但是对于这样的问题来说它是非常沉重的。
我有一些 ASP.NET MVC 应用程序的生产 IIS 服务器。我遇到了一些我无法捕获的棘手错误。它链接到会话数据。如何导出/查看/查看此类用户会话?会话存储有默认的 IIS 配置——进程内。
编辑
顺便说一句,我有必要的适当用户会话 ID。
编辑2
好的,伙计们,即使我现在无法导出该数据,您能否指点我一些会话状态服务器或类似的东西,我可以使用它来存储会话数据并进一步查看它?我知道 SQL Server 可以,但是对于这样的问题来说它是非常沉重的。
Chris 遵循他的想法,您可以编写一个例程,将会话对象的内容输出到文件(一种自定义日志)。
//Controller Action where you store some objects in session
public ActionResult Index()
{
var myObj = new { strTest = "test string", dtTestValue = DateTime.Now, listTest = new List<string>() { "list item 1", "list item 2", "list item 3" }};
Session["test1"] = "Test";
Session["test2"] = myObj;
return View();
}
//Controller Action where you output session objects to a file
[HttpPost]
public ActionResult Index(FormCollection form)
{
//Routine to write each sessionObject serialized as json to a file
foreach (string key in Session.Keys)
{
var obj = Session[key];
JavaScriptSerializer serializer = new JavaScriptSerializer();
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Public\CustomAspNetLog.txt", true))
{
file.WriteLine(DateTime.Now.ToString() + "\t" + serializer.Serialize(obj));
}
}
return View();
}
如果您需要经常调用该例程,您可以将它放在一些帮助类中,并在您需要时在控制器操作中调用它。然后,您可以在您认为必要的每个步骤中检查 Session 中的真实数据。
不,您需要编写一个例程来在需要时导出会话数据。
KSeen
存储会话比 StateServer (即分布式缓存提供程序)有更好的选择。
Alachisoft 提供完全免费的 NCache Express。您可以使用它来存储您的会话。这是您的操作方法。
在每台 Web 服务器上安装 NCache。定义分布式缓存:确保测试分布式缓存以确保其正常工作。修改 web.config 文件:添加 SessionState Provider 信息和刚刚创建的缓存的名称。
<sessionState cookieless="false" regenerateExpiredSessionId="true"
mode="Custom"
customProvider="NCacheSessionProvider" timeout="1">
<providers>
<add name="NCacheSessionProvider"
type="Alachisoft.NCache.Web.SessionState.
NSessionStoreProvider"
cacheName="myreplicatedcache"
writeExceptionsToEventLog="false"
AsyncSession="false"/>
</providers>
</sessionState>
请注意,Version=3.2.1.0 应该与您下载的特定 NCache Express 版本相匹配。完成此操作后,您的 ASP.NET 应用程序就可以开始使用分布式会话了。