我不能在类文件中设置Session吗?

时间:2010-04-27 18:36:04

标签: asp.net session

为什么会话在此中为空即使我设置:

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"];
    }
}

alt text

3 个答案:

答案 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是对的;)