Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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# 会话变量不保持值_C#_Session - Fatal编程技术网

C# 会话变量不保持值

C# 会话变量不保持值,c#,session,C#,Session,我试图将datatable存储在会话变量中,但会话变量在分配给它的方法之后会丢失其值 我还尝试了另一种选择,创建一个类并将值存储在该类的属性中,但即使这样,我也无法保留该值 我也尝试过Viewstate。我有一个Sharepoint项目,因此无法在web配置中添加带有超时选项的会话标记 我试图在一个事件处理程序中存储值,并在另一个事件处理程序中使用它,但当添加addwatch选项时,值会被擦除/丢失,请任何人提供建议 //Declaring datatable DataTable dt

我试图将datatable存储在会话变量中,但会话变量在分配给它的方法之后会丢失其值

我还尝试了另一种选择,创建一个类并将值存储在该类的属性中,但即使这样,我也无法保留该值

我也尝试过Viewstate。我有一个Sharepoint项目,因此无法在web配置中添加带有超时选项的会话标记

我试图在一个事件处理程序中存储值,并在另一个事件处理程序中使用它,但当添加addwatch选项时,值会被擦除/丢失,请任何人提供建议

 //Declaring datatable 

 DataTable dt = new DataTable();
 //storing datatable into session in this way

    Session.Add("emp", dt);

  //acessing in that way

    DataTable employee= Session["emp"] as DataTable
在web.config文件中添加

  <configuration>
         <system.web>
                <sessionSate mode="StateServer" cookieless="false" timeout="940"/> 
           </system.web>
   </configuration>

我已经找到了问题的根本原因,我在try块中使用了session initialize语句,后面是finally块。在finally时钟中,我处理了分配给session变量的视图,就是在这里session变量失去了它的值并变为空,还尝试将值存储在类级静态变量中,这个值在处理源视图的finally块中也是空的,我不确定为什么

解决方案
我已经通过实现我自己版本的dispose方法解决了这个问题,其中数据视图完全无效。

您是否使用会话名称声明和存档会话,以及是否将会话存储在会话阵列中?首先,发布一个“我已向他提供了所有可能的解决方案,但没有标记我的答案”或“更正”,我仍然有一个问题,比如在try块内分配的静态变量/会话变量在到达finally块后会丢失它的值,但是我没有对finally块内的变量执行任何操作,这是令人困惑的??无法序列化会话状态。在“StateServer”和“SQLServer”模式下,ASP.NET将序列化会话状态对象,因此不允许使用不可序列化的对象或MarshalByRef对象。如果自定义会话状态存储在“自定义”模式下完成了类似的序列化,则同样的限制也适用。已尝试了标记为可序列化、web配置项和会话属性的所有三种格式选项,但仍面临上面发布的错误消息