Partial Class Preferences_MyPreferences
Inherits System.Web.UI.Page
Dim userID As String = Session("UserID")
这只是asp.net中的一个页面。我希望能够获取Session(“UserID”)但每次尝试时都会收到此错误:
只有在配置文件或Page指令中将enableSessionState设置为true时,才能使用会话状态。还请确保System.Web.SessionStateModule或自定义会话状态模块包含在应用程序配置的\\部分中。
如果我把Dim用户ID放在内部说出Page_Load事件,那么它可以正常工作。为什么必须在活动中?我想把它调暗一次,并在整个页面中使用它。
答案 0 :(得分:3)
考虑将代码的调用包装在代码后面的属性中吗?
Public ReadOnly Property UserID() As String
Get
Return Session("UserID")
End Get
End Property
答案 1 :(得分:1)
如果你在那里声明它,那么变量将被初始化,并且会话变量可以准备好使用,但是在页面生命周期中为了允许这样做太早。首选方法是@p.campbell建议并将其包装在Property或类似方法中。但是,要回答这个问题,会生成异常,因为您尝试在会话可用之前使用会话。
答案 2 :(得分:1)
您需要阅读ASP.NET Page Lifecycles。 Session
对象在页面生命周期中的某个点之前不可用;如果您想抓住UserID
一次,则需要在会话可用后进行。
它在您的示例中不起作用的原因是您的Preferences_MyPreferences
页面的构造函数在请求对象可用于页面之前执行。您应该在Page_Init
或Page_Load
事件期间加载它。