【问题标题】:Session ID changes in each Request每个请求中的会话 ID 更改
【发布时间】:2014-03-29 02:52:28
【问题描述】:

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

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

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

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

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

如果我删除Cookieless 标签,会话将在下一页中丢失? 有谁知道为什么会这样,是否有任何解决方案可以解决这个问题?


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


编辑: 我设置了我的cookieless="false",现在它工作正常。

【问题讨论】:

  • 使用 cookie 似乎有问题。你测试过什么浏览器?什么是服务器设置?
  • 我只是在使用 VS2013。 IE、Chrome 和 Mozilla 我试过了。我到处都一样。
  • 大多数样本都明确声明cookieless='false'。请尝试一下。
  • 这个链接可以帮助你link
  • 你在 Session 中存储了一些东西吗?如果你没有,为什么服务器要保留那个空会话?请参阅 Chirag 提供的链接中的 highest voted answer

标签: c# asp.net session iis


【解决方案1】:

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

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

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

  1. 你是否在 Session 中存储了一些东西?
  2. 您在使用多线程吗?
  3. 您的场将拥有多少台服务器(应用程序上线时)
  4. 您的应用程序是否连接到数据库?

如果您保留原始 web.config,默认情况下您的应用程序将使用 InProc 模式并将会话 ID 存储在 cookie 中,除非您的浏览器或本地服务器拒绝它。

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

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

【讨论】:

  • 明确一点:InProc 不会将所有数据存储在 cookie 中,只会存储 SessionID。存储的数据保留在服务器上。
猜你喜欢
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 2017-07-27
  • 1970-01-01
  • 2016-12-29
相关资源
最近更新 更多