【发布时间】:2018-02-06 03:16:53
【问题描述】:
我正在为一个项目使用 ASP.NET。我正在尝试设置一个会话变量并在 aspx 文件中访问它的值。
在 VB.NET 中,我这样设置会话变量:
Partial Class MainSite_Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Session("TestVariable") = "Lorem ipsum"
End Sub
End Class
在相应的 aspx 文件中,我可以使用<%=Session("TestVariable")%> 访问它的值。
这很好用。但是,现在假设我用 C# 重写它,并尝试类似地设置会话变量:
public partial class Mainsite_Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e) {
Session["TestVariable"] = "Lorem ipsum";
}
}
再一次,在 aspx 文件中,我尝试使用 <%=Session["TestVariable"]%> 访问它的值。
在这种情况下,Session["TestVariable"] 为空。该值似乎没有被分配。我也尝试将Session 更改为HttpContext.Current.Session,但没有成功。
我是否在 C# 中设置了错误的会话变量?
有趣的是,如果我在 MasterPageFile 中设置会话变量,我就可以在 aspx 文件中访问它。但如果我将它放在我的Mainsite_Default 类的Page_Load 方法中,则不会。但是,如果我在 VB.NET 的 Page_Load 方法中设置变量,它就可以正常工作。
【问题讨论】:
-
应该可以。试试:
<%=(string)Session["TestVariable"]%>看看它是否会产生差异。 -
你检查过 Session["TestVariable"] = "Lorem ipsum";语句被命中,使用调试器?