Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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
C# ASP.Net状态服务器和访问HttpContext.Current.Session_C#_Asp.net_Session State - Fatal编程技术网

C# ASP.Net状态服务器和访问HttpContext.Current.Session

C# ASP.Net状态服务器和访问HttpContext.Current.Session,c#,asp.net,session-state,C#,Asp.net,Session State,我目前正在使用ASP.Net状态服务器在我的应用程序中存储会话数据 为了解决会话中的一个更大问题(不要问),我需要从会话中删除一组包含特定字符串的键,但我不知道确切的键 我想做一些类似下面代码的事情。由于会话数据已超出进程,因此我担心这样做会将整个会话数据加载到ASP.Net工作进程中。这是一个问题,因为当前应用程序在会话中放置了太多数据(这是我们试图解决的长期问题) 有人知道如何在幕后访问会话吗?有没有一种方法可以在不将会话加载到内存的情况下迭代会话密钥 //does this line ca

我目前正在使用ASP.Net状态服务器在我的应用程序中存储会话数据

为了解决会话中的一个更大问题(不要问),我需要从会话中删除一组包含特定字符串的键,但我不知道确切的键

我想做一些类似下面代码的事情。由于会话数据已超出进程,因此我担心这样做会将整个会话数据加载到ASP.Net工作进程中。这是一个问题,因为当前应用程序在会话中放置了太多数据(这是我们试图解决的长期问题)

有人知道如何在幕后访问会话吗?有没有一种方法可以在不将会话加载到内存的情况下迭代会话密钥

//does this line cause the session to be loaded back into the WP?
var session = HttpContext.Current.Session;

if (session != null)
{
    //what about this line?
    var keysToRemove = session.Keys.Cast<object>().
        Where(key => key.ToString().Contains(MYKEY)).ToList();
    foreach (var key in keysToRemove)
    {
        session.Remove(key.ToString());
    }
}
//此行是否导致会话加载回WP?
var session=HttpContext.Current.session;
if(会话!=null)
{
//这条线怎么样?
var keystemove=session.Keys.Cast()。
其中(key=>key.ToString().Contains(MYKEY)).ToList();
foreach(keystemove中的var键)
{
session.Remove(key.ToString());
}
}

根据用户对内置提供程序的请求,整个会话始终加载到内存中。它是在执行到达正常页面代码之前加载的(不像您假设的那样是惰性的)。防止加载的唯一方法是让模块侦听一个早期事件并从请求中删除会话Id


注意:session.Keys已经是字符串的集合,所以您可以删除这样复杂的强制转换

在用户请求内置提供程序时,整个会话始终加载到内存中。它是在执行到达正常页面代码之前加载的(不像您假设的那样是惰性的)。防止加载的唯一方法是让模块侦听一个早期事件并从请求中删除会话Id

注意:session.Keys已经是字符串的集合,所以您可以删除这样复杂的强制转换