C# 父进程中的会话
我有一个从.cs类继承的webform(从Page开始) 我试图从BaseWebForm访问当前会话,但在它的上下文中,它为null。我通过以下方式调用BaseWebForm: 表格页C# 父进程中的会话,c#,asp.net,webforms,C#,Asp.net,Webforms,我有一个从.cs类继承的webform(从Page开始) 我试图从BaseWebForm访问当前会话,但在它的上下文中,它为null。我通过以下方式调用BaseWebForm: 表格页 WebForm1 :BaseWebForm public WebForm1(): Base() { } BaseWebForm.cs类 public BaseWebForm () { //access HttpContext.Current.Session["
WebForm1 :BaseWebForm
public WebForm1(): Base()
{
}
BaseWebForm.cs类
public BaseWebForm ()
{
//access HttpContext.Current.Session["User_xComics"]
}
在BaseWebForm上下文中,会话为null,但在WebForm1的上下文中,会话确实存在。有什么问题吗?
BaseWebForm
类应该继承自System.Web.UI.Page
。您可能应该只使用页面生命周期事件,例如page\u Load
,而不是在构造函数中执行Session
工作
用户登录后,您可能应该立即初始化
HttpContext.Current.Session[“user\u xComics”]
。如果这是使用Windows身份验证,最好的位置是在全局应用程序类(.asax.cs)的会话\u Start
函数中什么是“heradates”?我想你的意思是“派生”。你在修改你的BaseWebForm
的什么方法<代码>HttpContext.Current在某些情况下可以为空。如果您使用OnLoad
方法并访问this.Request
?您是否考虑过在Global.asax
文件dai中的OnSessionStart()
中初始化HttpContext.Current.Session[“User\u xComics”]
,请查看编辑。MethodMan我还没有尝试过,我将尝试您还需要使用if(IsPostBack){}
或if(!IsPostBack){}
检查string.IsNullOrEmpty((string)HttpContext.Current.Session[“User\xComics]”时的值,在Page\u Load
事件中为该值编码
然后强制登录,否则重定向,或让用户继续执行从System.Web.UI.Page继承的Web表单。问题是,我想在让用户访问page@Flezcano然后,您可能应该显示比当前显示的代码更多的代码。。另外,请阅读OnSessionStart
及其使用方法。。有很多方法可以检查您正在尝试做什么,但根据您在我看来提供的少量信息,无法提供准确的解决方案…@Flezcano然后在我所说的页面生命周期事件中执行此操作Page\u Load
和Page\u PreInit
似乎是很好的候选者。
public BaseWebForm ()
{
//access HttpContext.Current.Session["User_xComics"]
}