【问题标题】:Get session object from sessionID in ASP.Net从 ASP.Net 中的 sessionID 获取会话对象
【发布时间】:2015-09-12 06:07:25
【问题描述】:
是否可以从sessionID 获取会话对象?
我有一个小项目使用 Flash 上传让用户将他们的文件上传到服务器,但问题是 Flash 在发送会话和 cookie 时有一些错误(在 Firefox 或 Chrome 中,但不是 IE),所以我找到了解决此问题的解决方案:通过 Flash 将sessionID 发送到服务器,并在服务器上将sessionID 解码回会话对象,但我不知道该怎么做。我正在使用 ASP.NET 和 C#。
谁能告诉我该怎么做?
【问题讨论】:
标签:
asp.net
session
session-state
【解决方案1】:
Moo-Juice 提供的链接已失效。
我使用了本页提供的代码:
http://snipplr.com/view/15180/
它就像一个魅力。
如果链接断开,代码如下:
void Application_BeginRequest(object sender, EventArgs e)
{
try
{
string session_param_name = "ASPSESSID";
string session_cookie_name = "ASP.NET_SESSIONID";
string session_value = Request.Form[session_param_name] ?? Request.QueryString[session_param_name];
if (session_value != null) { UpdateCookie(session_cookie_name, session_value); }
}
catch (Exception) { }
try
{
string auth_param_name = "AUTHID";
string auth_cookie_name = FormsAuthentication.FormsCookieName;
string auth_value = Request.Form[auth_param_name] ?? Request.QueryString[auth_param_name];
if (auth_value != null) { UpdateCookie(auth_cookie_name, auth_value); }
}
catch (Exception) { }
}
void UpdateCookie(string cookie_name, string cookie_value)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookie_name);
if (cookie == null)
{
HttpCookie cookie1 = new HttpCookie(cookie_name, cookie_value);
Response.Cookies.Add(cookie1);
}
else
{
cookie.Value = cookie_value;
HttpContext.Current.Request.Cookies.Set(cookie);
}
}