为什么会话在此中为空即使我设置:
public class HelperClass
{
public AtuhenticatedUser f_IsAuthenticated(bool _bRedirect)
{
HttpContext.Current.Session["yk"] = DAO.context.GetById<AtuhenticatedUser>(1);
if (HttpContext.Current.Session["yk"] == null)
{
if (_bRedirect)
{
HttpContext.Current.Response.Redirect(ConfigurationManager.AppSettings["loginPage"] + "?msg=You have to login.");
}
return null;
}
return (AtuhenticatedUser)HttpContext.Current.Session["yk"];
}
}
答案 0 :(得分:2)
通常,会话在应用程序身份验证请求中不可用。
OnAcquireRequestState调用后会话可用。 这是应用程序事件call sequence
另外,请注意,只有当目标HttpHandler实现IRequiresSessionState或IReadOnlySessionState时,会话才可用,并且通常会调用AuhenticateRequest来获取.js或.jpg等资源。
答案 1 :(得分:0)
把它扔到那里。引用它的正确方法是:
System.Web.HttpContext.Current.Session
或者如果你引用了这个程序集,那么HttpContext.Current.Session应该不错。
答案 2 :(得分:0)
当我使用此代码调用方法时,我收到错误:
public partial class AddNews : System.Web.UI.Page
{
private AtuhenticatedUser yk = (new HelperClass()).f_IsAuthenticated(true);
protected void Page_Load(object sender, EventArgs e)
{
//
}
但是当我在Page_Load函数中调用该方法时,它正在工作
public partial class AddNews : System.Web.UI.Page
{
private AtuhenticatedUser yk =new AtuhenticatedUser();
protected void Page_Load(object sender, EventArgs e)
{
yk = (new HelperClass()).f_IsAuthenticated(true);
}
我认为Valera Kolupaev是对的;)