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