发布
社区首页 >问答首页 >无法以我想要的方式获得会话变量

无法以我想要的方式获得会话变量
EN

Stack Overflow用户
提问于 2011-01-14 18:42:19
回答 3查看 1.1K关注 0票数 1
代码语言:javascript
代码运行次数:0
复制
Partial Class Preferences_MyPreferences
    Inherits System.Web.UI.Page

    Dim userID As String = Session("UserID")

这只是asp.net中的一个页面。我希望能够获取会话(“UserID”),但每次尝试时,我都会得到以下错误:

会话状态只能在enableSessionState设置为true时使用,无论是在配置文件中还是在Page指令中。还请确保应用程序配置中的\部分包括System.Web.SessionStateModule或自定义会话状态模块。

如果我把Dim userID放在里面,比如Page_Load事件,那么它工作得很好。为什么它必须在活动中?我想把它调暗一次,并在整个页面上使用它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-14 18:48:13

考虑将对会话的调用封装在代码后面的属性中吗?

代码语言:javascript
代码运行次数:0
复制
Public ReadOnly Property UserID() As String
    Get
        Return Session("UserID")
    End Get
End Property
票数 3
EN

Stack Overflow用户

发布于 2011-01-14 18:55:46

如果您像在那里一样声明它,则将初始化该变量,并且会话变量将准备好供使用,但在页面生命周期中,允许这样做为时尚早。首选的方法将如@p.campbell所建议的那样,并将其包装在属性或类似方法中。但是,要回答这个问题,会生成异常,因为您试图在会话可用之前使用它。

票数 1
EN

Stack Overflow用户

发布于 2011-01-14 18:57:03

你需要读一读ASP.NET页面生命周期。在页面生命周期中的某个点之前,Session对象是不可用的;如果您想抓取UserID一次,则需要在会话可用之后进行。

在您的示例中,它不起作用的原因是在请求对象可用于页面之前执行了Preferences_MyPreferences页面的构造函数。相反,您应该在Page_InitPage_Load事件期间加载它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4694676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档