Asp.net 开发站点创建会话精细,生产站点不';T

Asp.net 开发站点创建会话精细,生产站点不';T,asp.net,session-variables,Asp.net,Session Variables,我有两个站点运行在同一台服务器上(Win2003上的IIS7) 站点A是我的生产站点 站点B是站点a的开发版本。除了web.config文件中的连接字符串外,两个站点运行相同的代码 在global.asax的session_OnStart中创建了一些会话变量。我注意到在过去的几周里,站点A的会话变量没有被正确创建。(这些变量用于填充两个下拉列表)这会导致下拉列表不会自动填充,或者根据用户试图点击的页面出现其他错误 站点B的会话变量工作正常。当我访问站点B时,下拉列表如我所料填充 我想尝试的第一件

我有两个站点运行在同一台服务器上(Win2003上的IIS7)

站点A是我的生产站点

站点B是站点a的开发版本。除了web.config文件中的连接字符串外,两个站点运行相同的代码

在global.asax的session_OnStart中创建了一些会话变量。我注意到在过去的几周里,站点A的会话变量没有被正确创建。(这些变量用于填充两个下拉列表)这会导致下拉列表不会自动填充,或者根据用户试图点击的页面出现其他错误

站点B的会话变量工作正常。当我访问站点B时,下拉列表如我所料填充


我想尝试的第一件事是重新设置IIS,看看这是否能解决问题,但我想知道,如果两个站点运行相同的代码,为什么不能正确创建会话?

我想出了一个解决方案,但我仍然不知道为什么会发生这种情况

最后我编写了防御代码来处理会话变量,我对没有正确初始化感兴趣。当这种情况发生时,我有正确设置变量的代码。(在我作为.NET开发人员的这些年里,这是会话第一次成为问题)

我可以排除大多数常见的原因-我知道会话没有超时,我知道没有对web.config或任何IIS设置进行更新(这是一个生产站点,因此没有人在未提交支持票证的情况下接触IIS,唯一提交IIS支持票证的人是我)


当用户单击站点中的特定链接时,这似乎是一个问题。由于某些原因,访问此特定页面会导致会话变量丢失。我无法解释原因,但至少我已经让代码正常工作,不再抛出异常。

两个站点是否有相同的会话存储?如果使用sql作为会话存储,您能验证连接是否正确创建吗?它们都使用默认会话管理(InProc)。有关可能性,请参阅。