【发布时间】:2023-03-13 16:20:01
【问题描述】:
将 Web 项目升级到 .net 4.5 后,我无法访问会话
首先,我有一个功能强大的 .net 3.5 Web 表单项目,我在我的开发机器上升级到了 .net 4.5。这在本地编译并运行良好
其次,我修改了我的 dev iis 服务器上的应用程序池以使用 .net 4.0 来准备运行新的代码部署
最后我将升级后的项目部署到了开发网络服务器。
问题是我立即收到一个错误,我被告知我需要启用会话状态才能访问会话变量。
背景:
我有一个母版页,用于检查会话变量是否存在。我已将此代码放在母版页的 page_init 事件中,以确保它在内容页面等的 page_load 之前运行。
这种技术在 .net 3.5 下运行良好,在本地开发机器上运行良好,在 4.5 下运行良好。但在iis服务器上不起作用。
我关注了各种线程,告诉我在配置中设置 enablesessionstate=true 都无济于事。
可能是在 iis 上运行 .net 4.5 的 .net 站点在会话方面存在问题,还是我遗漏了一些更明显的问题。
请帮忙,因为这非常令人沮丧
【问题讨论】:
-
您是在 proc 或 state server session 中使用吗?可能必须在 web.config 中明确说明选择。我很确定它会默认为 in proc,但可能是错误的。说你可能会犯更多基本错误
-
您能告诉我们您在 system.web -> sessionState 中的配置吗?有一个名为“mode”的属性,您可以在其中设置会话状态模式(它是一个枚举)。确保它没有设置为“关闭”。
-
我今天不上班(明天回来),但在 iis 上启用了 Session 并设置为(inproc)一切都是应该的,实际上作为诊断,我使用配置了一个小型独立项目一个简单的会话变量来证明会话已启用。这行得通,所以我相信问题一定是:在.net 4.5的母版页中使用会话? (我不知道的错误/差异)在页面生命周期中,我在母版页上使用会话的位置(当前为 page_init)还有什么?会话在一个简单的站点中有效,但在我部署的站点上无效。
-
好吧,我不知道是什么原因造成的?我通过创建一个全新的 .net 4.5 项目并从我先前存在的站点导入资产/页面来解决此问题。值得注意的是,这样做不会导致部署到 Web 服务器后的会话出现问题,这确实很奇怪。我只能假设我最初使用的项目升级过程留下了一些奇怪的配置,这会扰乱服务器???无论如何,现在已经在这方面投入了足够的时间,感谢您抽出宝贵时间发表评论。
标签: asp.net session master-pages