asp.net - 调试时导出 IIS 进程内 session 数据

标签 asp.net .net asp.net-mvc session iis

我有生产 IIS 服务器和一些 ASP.NET MVC 应用程序。我遇到了一些我无法捕获的棘手错误。它链接到 session 数据。我如何导出/查看/查看此类用户 session ? session 存储有默认的 IIS 配置——进程内。

<小时/>

编辑

顺便说一句,我有必要的适当的用户 session ID。

<小时/>

编辑2

好吧,伙计们,即使我现在无法导出该数据,您能否给我指出一些 session 状态服务器或类似的东西,我可以使用它来存储 session 数据并进一步查看它? 我知道 SQL Server 可以,但它对于此类问题来说非常严重。

最佳答案

Chris 正确地遵循了他的想法,您可以编写一个例程,将 session 对象的内容输出到文件(一种自定义日志)。

//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();
}

如果您需要经常调用该例程,您可以将其放入某个辅助类中,并在 Controller 操作中随时调用它。然后您就可以在您认为必要的每一步检查 session 中的真实数据。

关于asp.net - 调试时导出 IIS 进程内 session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13929507/

相关文章:

asp.net - HTTP缓存: Cache-Control

javascript - 如何在 asp.net c# 中注销我的应用程序?

asp.net - 中继器中的中继器

c# - .NET 中具有深度继承的类的内存分配

c# - ASP.NET MVC 中的 DropdownList - 未发布值

javascript - html表格的 float 水平滚动条

asp.net - HttpRuntime.Cache 和 HttpContext.Current.Cache 之间的区别?

.net - 为什么 .net WCF 服务需要接口(interface)

c# - 给定两个日期时,检查在一个时间范围内是否花费了至少两个小时

html - 如何在 MVC (asp.net) 中为进入域和根目录的应用程序编写 css?