Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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会话变量仅第二次设置_C#_Asp.net_Session - Fatal编程技术网

C# ASP.NET会话变量仅第二次设置

C# ASP.NET会话变量仅第二次设置,c#,asp.net,session,C#,Asp.net,Session,我有三个Session变量,我在ASMXweb服务中为它们赋值,如下所示: Session["Stats1"] = items; Session["Stats2"] = items; Session["Stats3"] = items; 每个赋值都在它自己的web方法中发生,当我调试时,每个赋值都被命中,“items”变量不为null。正如背景信息一样,“项目”是以下类别的列表: public class BindableStat { public string a { get; se

我有三个
Session
变量,我在
ASMX
web服务中为它们赋值,如下所示:

Session["Stats1"] = items;
Session["Stats2"] = items;
Session["Stats3"] = items;
每个赋值都在它自己的web方法中发生,当我调试时,每个赋值都被命中,“items”变量不为null。正如背景信息一样,“项目”是以下类别的
列表

public class BindableStat
{
    public string a { get; set; }
    public string b { get; set; }
    public string c { get; set; }
}
当我需要强制转换并使用
会话
变量时,我会:

if (Session["Stats1"] != null && Session["Stats2"] != null && Session["Stats3"] != null)
{
    // stuff
}
问题是,我第一次为变量赋值并使用变量时,只有“Session[“Stats1”]”不为null,其他变量为null。第二次赋值以及以后的任意次数都会产生预期的结果:每个变量都不是null,并且具有正确的值

web.config
如下所示:

<sessionState mode="InProc" timeout="120" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
  </providers>
</sessionState>

为什么
会话第一次会失败


edit:我已经通过在第一次加载页面时为会话分配一个随机值(我想我可以在第一次运行应用程序时这样做)解决了这个问题。在
Page_Load
中,我刚刚设置了“会话[“x”]=“x””。我仍然不知道为什么会话需要这样初始化。

您从何处尝试从会话中获取值?在web服务中?否,我尝试在代码隐藏中获取值,在声明WebMethod时,在按钮上单击Handler-是否传递EnableSession声明性属性的
True
?你能展示一个WebMethod声明吗?有点奇怪,一个web服务通常驻留在另一个web服务器上,而你正试图在另一个服务器上读取它的会话值(在你的例子中,它们都是本地主机,但仍然很奇怪)。是的,我有。否则,第二次就不行了。我使用“[WebMethod(true)]”作为所有有问题的方法