Asp.net 在global.asax中获取全局值

Asp.net 在global.asax中获取全局值,asp.net,session,global-asax,Asp.net,Session,Global Asax,我在文件global.asax中遇到了一个关于global.asax的问题,我想获取变量会话,我已经在login.aspx中设置了会话,当我获取变量会话时,它的错误是:对象引用未设置为对象的实例 用于全局.asax的代码: protected void Application_AuthenticateRequest(object sender, EventArgs e) { string SID = Cookies.GetCookie().SessionID; // error at

我在文件
global.asax
中遇到了一个关于
global.asax
的问题,我想获取变量会话,我已经在
login.aspx
中设置了会话,当我获取变量会话时,它的错误是:对象引用未设置为对象的实例

用于
全局.asax的代码

protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
     string SID = Cookies.GetCookie().SessionID; // error at this point
     if (ShoppingCart.CheckIsSessionActive() == false)
     {
         Cookies.DeleteCookie();
         FormsAuthentication.SignOut();
                Response.Redirect("../expired.htm");
     }
}
login.aspx.cs中的代码设置会话

  protected void btnLogin_Click(object sender, EventArgs e)
  {
      Cookies.DeleteAllCookies();

      var sess = Cryptography.SetSID();

      Cookies cookies = new Cookies();
      cookies.UserID = (int)row["Id"];
      cookies.UserName = txtLoginID.Text;
      cookies.SessionID = sess;

      Cookies.SetCookie(cookies);

      Response.Redirect("~/Admin/Lounge.aspx");
  }
但是,如果我禁用了
global.asax
的代码,并直接指向文件
lounge.aspx
,并且在文件
lounge.aspx.cs
中获得与文件
global.asax
中类似的值,那么它的工作

lounge.aspx.cs的代码

  protected void Page_Load(object sender, EventArgs e)
  {
        int UserID = Cookies.GetCookie().UserID;
        string SID = Cookies.GetCookie().SessionID;
  }
函数GetCookie()的代码:


thx

您是否尝试过获取/设置
HttpContext.Current.Request.Cookies
?如果您看到函数GetCookie(),则函数GetCookie()内部已经设置了HttpContext.Current.Request.Cookies,我将编辑代码以显示函数GetCookie内部
  public static Cookies GetCookie()
    {
        Cookies cookies = Cache.Get("Cookie" + HttpContext.Current.User.Identity.Name) as Cookies;

        if (cookies == null)
        {
            cookies = GetCookieToCache();
            Cache.Insert("Cookie" + HttpContext.Current.User.Identity.Name, cookies, 15);
        }

        return cookies;
    }

    private static Cookies GetCookieToCache()
    {
        Cookies cookies = new Cookies();
        HttpCookie HttpCookie = HttpContext.Current.Request.Cookies[COOKIESNAME];

        if (HttpCookie != null)
        {
            Hashtable hTable = new Hashtable();
            HMB.Components.Utility.DecodeParameters(HttpCookie.Value, out hTable);

            cookies.UserID = Convert.ToInt32(Cryptography.TDESDecrypt(hTable["1"].ToString()));
            cookies.UserName = Cryptography.TDESDecrypt(hTable["2"].ToString());
            cookies.SessionID = Cryptography.TDESDecrypt(hTable["3"].ToString());

        }


        return cookies;
    }