【问题标题】:Sometimes, session is lost when Default.aspx loads in my web application有时,在我的 Web 应用程序中加载 Default.aspx 时会话会丢失
【发布时间】:2013-03-11 19:30:22
【问题描述】:

我正在开发一个 ASP.net Web 应用程序,该应用程序的作者已不再为我的组织工作。

我发现了一个奇怪的错误。这是间歇性问题。

我在应用程序中有一个名为 default.aspx 的页面。有时,加载此页面时,整个会话都会丢失。我在调试器中看到发生这种情况时会触发 Session_Start 事件。有时,Session_End 事件也会触发,但这似乎并非每次都发生。

我在 web.config 中找到了一个自定义的 sessionState 配置,但删除它并不能解决问题。

Default.aspx 直接继承 System.Web.UI.Page 并且除了 Page_Load 之外没有定义任何事件。

项目中没有 global.asax。

什么可能导致这个令人沮丧的问题?

更新:我在 Visual Studio 2010 的内置服务器中运行应用程序时遇到了这个问题。我的工作站上没有安装 IIS。

【问题讨论】:

  • 您知道它是在 IIS 中自己的应用程序池下运行,还是在默认应用程序池下运行?每当应用程序池循环时,您将丢失所有会话信息(如果您使用“进行中” - 默认 - 会话设置)。另外,您能告诉我们该自定义 sessionState 部分的“模式”属性吗?
  • 您能在浏览器中查看cookie ASP.NET_SessionId 的值吗?它是否保持其价值?
  • @Malcolm,我尝试在 MSIE 中检查我的 cookie,方法是按 F12 进入调试器,然后选择缓存 -> 查看 Cookie 信息。我看到一些按预期创建的 cookie,但我没有看到名为 ASP.NET_SessionId。

标签: asp.net session session-variables session-state


【解决方案1】:

可能导致会话问题(可能不适用于您的情况)的潜在问题是,有时,某些 IIS 管理员将应用程序池设置为 WebGarden(即,最大工作进程 > 1)。这是一种常见的拉扯头发的情况。

如果您使用的是 VS 2010,则每次启动应用程序时,VS 2010 都会启动一个“迷你 IIS”。您可以在系统托盘部分看到它。每次它启动一个新的“ASP.Net 开发服务器”,它就是一个新的会话。

只是想帮忙。

【讨论】:

    【解决方案2】:

    我发现了会话丢失的情况 - 在 asp.net 页面中,对于金额文本框字段具有无效字符,然后为其他目的检索会话变量。通过转换发布无效数字解析后。 ToInt32 或 double 引发第一次机会异常,但该行未显示错误,取而代之的是,由于未处理的异常,Session 为空,在会话检索时显示错误,从而欺骗调试...

    希望对你有帮助, 海德科技

    【讨论】:

      猜你喜欢
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 2014-10-04
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      相关资源
      最近更新 更多