ASP.Net Session_Start总是触发

时间:2011-02-03 10:57:54

标签: asp.net session web-config global-asax

我对以下内容感到有点困惑: 我在Global.asx的Session_Start()中设置了一个带有一些逻辑的asp.net网站。我预计这甚至只会在会话期间触发一次。但是,每次请求都会触发事件。

当我声明一个虚拟会话对象时,这解决了问题。 我也可以在web.config中添加<sessionState mode="InProc" />时修复此问题。我使用IIS7并检查了默认值,这已经设置为“正在处理”。

我错过了什么?这是正常的行为吗?即使我没有声明会话对象,我也希望这个事件能够正常工作。

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

我认为如果使用的浏览器不允许使用cookie,就会发生这种情况。如果您正在重新启动应用程序池,则会话将丢失。

<sessionState cookieless="true" />

这将解决不允许使用cookie的问题..

答案 2 :(得分:1)

你要检查:

  • 您的网络浏览器Cookie是否已启用?
  • 如果您希望禁用浏览器cookie,则需要无cookie会话状态管理(这不是一个好的选择,因为会话参数将在查询字符串中......)。
  • 在你的Global.asx的Application_Start期间,如果你在那里做某事,你检查过没有抛出一些让你的应用程序崩溃并结束的异常吗?
  • 在Application_Start之后的任何阶段,在Session_Start之前,你在做什么吗?如果是这种情况,请检查与上一点相同的内容。

答案 3 :(得分:0)

我最近遇到了这个问题,发现如果bin文件夹中的任何文件被更新,它将自动重新启动应用程序,从而触发Application_Start和Session_Start事件。就我而言,我正在bin文件夹中创建日志文件,并且日志文件中的更新会重新启动应用程序。我只是将日志文件移到bin文件夹之外以解决问题。