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事件,那么它工作得很好。为什么它必须在活动中?我想把它调暗一次,并在整个页面上使用它。
发布于 2011-01-14 18:48:13
考虑将对会话的调用封装在代码后面的属性中吗?
Public ReadOnly Property UserID() As String
Get
Return Session("UserID")
End Get
End Property
发布于 2011-01-14 18:55:46
如果您像在那里一样声明它,则将初始化该变量,并且会话变量将准备好供使用,但在页面生命周期中,允许这样做为时尚早。首选的方法将如@p.campbell所建议的那样,并将其包装在属性或类似方法中。但是,要回答这个问题,会生成异常,因为您试图在会话可用之前使用它。
发布于 2011-01-14 18:57:03
你需要读一读ASP.NET页面生命周期。在页面生命周期中的某个点之前,Session
对象是不可用的;如果您想抓取UserID
一次,则需要在会话可用之后进行。
在您的示例中,它不起作用的原因是在请求对象可用于页面之前执行了Preferences_MyPreferences
页面的构造函数。相反,您应该在Page_Init
或Page_Load
事件期间加载它。
https://stackoverflow.com/questions/4694676
复制相似问题