2013-03-11 75 views
0

我正在开发由不再适用于我的组织的人创作的ASP.net Web应用程序。有时,当在我的web应用程序中加载Default.aspx时会话丢失

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

我在应用程序中有一个名为default.aspx的页面。有时候,当这个页面被加载时,整个会话都会丢失。我发现在调试器中发生Session_Start事件时会触发。有时,Session_End事件也会触发,但这似乎并不是每次都会发生。

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

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

项目中没有global.asax。

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

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

+0

你知道它是否在IIS自己的应用程序池下运行,或者它是否在默认的应用程序池下?每当应用程序池循环时,您将失去所有会话信息(如果您使用“正在处理” - 默认 - 会话设置)。另外,你可以告诉我们该自定义sessionState部分的“模式”属性? – jadarnel27 2013-03-11 20:00:16

+0

你可以在浏览器中检查ASP.NET_SessionId Cookie的值吗?它保持其价值吗? – 2013-03-11 20:47:27

+0

@Malcolm,我试着通过按F12查看调试器在MSIE中检查我的cookie,然后选择缓存 - >查看Cookie信息。我看到许多按预期创建的cookie,但是我没有看到名为ASP.NET_SessionId的cookie。 – 2013-03-11 22:46:36

回答

0

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

希望它帮助, HydTechie

1

一个潜在的问题,可能会导致会话问题(可能不适用于您的情况),有时,一些IIS管理员设置应用程序池作为Web花园(即最大工作进程> 1)。这是一个常见的拉毛场景。

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

只是想帮忙。

相关问题