C# ASP.Net会话数据在页面之间丢失

C# ASP.Net会话数据在页面之间丢失,c#,.net,iis,session,session-variables,C#,.net,Iis,Session,Session Variables,我今天在我的web应用程序中遇到了一个奇怪的行为。当我从一个页面导航到另一个页面时,我会丢失一个特定的会话变量数据 我能够在firefox中启动该应用程序,并且能够看到会话数据没有丢失 我使用Response.Redirect(page2,false)重定向到另一个页面 下面的代码用于跟踪会话变量 System.IO.StreamWriter sw = new System.IO.StreamWriter(@"c:\test.txt", true); for (int i = 0; i <

我今天在我的web应用程序中遇到了一个奇怪的行为。当我从一个页面导航到另一个页面时,我会丢失一个特定的会话变量数据

我能够在firefox中启动该应用程序,并且能够看到会话数据没有丢失

我使用
Response.Redirect(page2,false)
重定向到另一个页面

下面的代码用于跟踪会话变量

System.IO.StreamWriter sw = new System.IO.StreamWriter(@"c:\test.txt", true);
for (int i = 0; i < Session.Count; i++)
{
 sw.WriteLine(Session.Keys[i] + " " + Session.Contents[i]);
}
sw.Close();
System.IO.StreamWriter sw=new System.IO.StreamWriter(@“c:\test.txt”,true);
for(int i=0;i

有人能帮我吗?非常感谢您的帮助。

您是在网络农场/网络花园环境中开发的吗?

尝试使用。根据应用程序池的配置和部署方式,默认进程内模式可能无法预测。

我遇到了完全相同的问题,在我的案例中,我找到了这种行为的原因。事实证明,当我调用Response.Redirect()方法时,我使用的是完整的url,而不仅仅是页面名称。因此,当我在localhost/myapp/page1.aspx中时,我重定向到MYMACHINENAME/myapp/page2.aspx,这就是为什么每个页面的会话都不同。我在我的代码中只使用了“page2.aspx”,然后在任何浏览器(即firefox)上的最终url都是localhost/myapp/page2.aspx。我不知道你是否像我那样处理url,但也许这个答案可以给你一个线索。谢谢,编码很好

我的问题如下:-

问题:当我们使用IIS 7.5将ASP.NET应用程序移动到另一台服务器(Windows server 2008 R2)时,应用程序无法在页面之间移动会话值。e、 g.会话值已在第一页中设置,但无法移动到下一页。在下一页中,同一会话变量的值为空

在Google Chrome和Firefox中,会话值会移到下一页,但在Internet Explorer中不会

解决方案:我们创建了带有“u”(下划线)的URL名称,例如。在移除“3;”后,它会按要求工作,例如

其他可能的解决办法:

  • 使用Response.Redirect并将第二个参数设置为“false”,以避免执行页面,从而避免丢失会话令牌。您必须按如下方式使用URL。Response.Redirect(“NextPage.aspx”,false)

  • 如果站点的应用程序池配置为web场或web花园(通过将工作进程的最大数目设置为多个),并且如果您没有使用会话服务或SQL会话,则传入的请求将不可预测地转到其中一个工作进程,如果不是创建会话的工作进程,它丢了。这个问题的解决方案是,如果不需要性能提升,就不要使用web garden,或者使用进程外会话提供程序


  • 欢迎来到SO,请花几分钟时间阅读常见问题解答和降价文档(编辑问题时在右边空白处提供了一个有用的语法)。到底发生了什么,您如何在客户端(firefox)上查看服务器端会话变量?您到底在使用什么,并且您是否检查了web.config以确保会话超时不是0?不,我不是在web farm/web garden环境中开发的。我可以尝试状态服务器模式,但由于此代码(使用InProc模式)已存在很长时间,并且还存在于其他3个环境中,因此我无法更改它。但是,我不知道为什么现在会出现这个问题那么cookies呢?使用fiddler观看和/或观看会话id的更改。