会话ID在每个请求中更改

时间:2014-02-26 10:32:41

标签: c# asp.net session iis

我有一个asp.net应用程序,我从一个页面重定向到另一个页面。我正在验证第二页中的SessionID以确保两个请求都是同一个会话。现在,我的问题是每当发生回发时SessionID都会改变。

现在,我将Session标记添加到web.config

<sessionState mode="InProc" cookieless="true"/>

现在,会话问题已解决,新问题开始出现。每当我在Cookiless="true"文件中使用web.config拨打电话时,我的网址会显示垃圾地址

http://localhost:10766/(S(ojbcobj0aw0wiosttgpknwby))/registration.aspx

如果我删除Cookieless标记会话将在下一页丢失? 有谁知道为什么会这样,如果有什么问题可以解决这个问题?


我经历了很多线程,但我找不到合适的解决办法。


EDITED: 我设置cookieless="false",现在工作正常。

1 个答案:

答案 0 :(得分:1)

.NET Framework具有05(五)个会话状态模式:

  • InProc模式,它将会话状态存储在Web服务器的内存中。这是默认设置。
  • StateServer模式,它将会话状态存储在名为ASP.NET状态服务的单独进程中。这可确保在重新启动Web应用程序时保留会话状态,并使会话状态可用于Web场中的多个Web服务器。
  • SQLServer模式将会话状态存储在SQL Server数据库中。这可确保在重新启动Web应用程序时保留会话状态,并使会话状态可用于Web场中的多个Web服务器。
  • 自定义模式,可让您指定自定义存储提供程序。
  • 关闭模式,禁用会话状态。

现在我需要确切知道您的应用程序做了什么来推荐更好的解决方案:

  1. 你在会话中存储了什么吗?
  2. 您使用的是多线程吗?
  3. 您的服务器场将拥有多少台服务器(应用程序上线时)
  4. 您的应用是否连接到数据库?
  5. 如果保留原始web.config,默认情况下,您的应用程序将使用InProc模式并将会话ID存储在cookie上,除非您的浏览器或本地服务器拒绝它。

    我正在等待答案以补充我的帖子。

    参考: http://msdn.microsoft.com/en-us/library/ms178586.ASPX