【问题标题】:asp.net application iis7 sessionstate is crossing over multiple users in different locationsasp.net 应用程序 iis7 sessionstate 跨越不同位置的多个用户
【发布时间】:2011-11-16 15:37:00
【问题描述】:

有一个我们从 iis 6 转移到 iis 7 的 asp.net web 应用程序 (2.0)。 它工作了 6 个月。三天前,我们一直看到一个登录用户看到其他用户信息的问题。 (会话信息) 会话正在进行中

我看到的唯一不同是 iis7 应用程序池处于集成模式。

我们已下架该应用程序。 应用网页配置如下

<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
  <remove name="ScriptModule"/>
  <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</modules>
<handlers>
  <remove name="WebServiceHandlerFactory-Integrated"/>
  <remove name="ScriptHandlerFactory"/>
  <remove name="ScriptHandlerFactoryAppServices"/>
  <remove name="ScriptResource"/>
  <remove name="WebServiceHandlerFactory-ISAPI-2.0"/>
  <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode"/>
  <add name="CrystalImageHandler.aspx_GET" verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" preCondition="integratedMode"/>
  <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</handlers>

有没有人知道它可能是什么 应用程序在 iis6 中一年没有这个问题 n 在 iis7 中没有任何问题 6 个月。

我们没有使用任何全局变量...

【问题讨论】:

  • 问题可能出在代码上,而不是配置上。它实际上可能根本没有使用 Session。
  • 如果是代码,我们会在一年前看到它。这发生在 2011 年 9 月 9 日到 2011 年 9 月 12 日
  • 您的配置中没有任何内容可能导致不同浏览器共享会话状态。
  • 刚刚浏览了服务器更新日志。 Microsoft 于 2011 年 9 月 9 日发布了更新,这意味着 Microsoft 已针对 IT 专业人员发布了有关此问题的 Microsoft 安全公告。此更新适用于所有受支持的 Microsoft Windows 版本。此更新通过将以下 DigiNotar 根证书置于 Microsoft 不受信任的证书存储中来撤销对它们的信任: •DigiNotar 根 CA •DigiNotar 根 CA G2 •DigiNotar PKIoverheid CA Overheid •DigiNotar PKIoverheid CA Organisatie - G2 •DigiNotar PKIoverheid CA Overheid en Bedrijven
  • 这和这有什么关系???

标签: asp.net iis-7 .net-2.0 session-state


【解决方案1】:

iis7 有一个特性/错误 通过应用程序池输出兑现

对于 3.5(经典)模式需要在 .aspx 扩展上显式关闭它 IIS7 会话被交叉/混淆/复制 我在网络场中检测到一个问题: 用户的 IIS 7 会话被交叉/混淆/复制。一个用户正在获取另一个用户的会话!!!!

经过一些研究,我发现 IIS 7 现在也具有缓存动态内容的能力。 它是IIS7中的一个新特性,这个版本的IIS引入了一些新的缓存特性。 (i) IIS7 自动缓存静态内容,例如 HTML 页面、图像和样式表。 (ii) IIS7 现在也能够缓存动态内容。

在 IIS7 中,禁用任何目录中的 .aspx 页面缓存,其中包含取决于会话状态的 asp.net 页面。执行此操作的步骤是: 1. 运行服务器管理控制台并导航到角色 -> Web 服务器 (IIS) -> Internet 信息服务。 2. 选择您要修改的站点。 3. 选择包含您需要关闭缓存的 .aspx 页面的文件夹。 4. 在功能视图中,双击“输出缓存”。 5. 如果.aspx 扩展名已有规则,请双击它。否则右键单击并选择“添加...” 6. 为“文件扩展名”输入 .aspx 7.勾选“用户模式缓存”、“阻止所有缓存”,勾选“内核模式缓存”和“阻止所有缓存”

【讨论】:

  • 所以会话毕竟没有任何问题......您只是错误地缓存了用户特定的内容,而您不应该这样做。
猜你喜欢
  • 1970-01-01
  • 2015-03-29
  • 2011-06-24
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多