如何设置asp.net sessionid获取用户session信息
如何设置asp.net sessionid获取用户session信息,如使用了uploadify,swfupload等居于flash上传的控件,非ie浏览器flash不会传递sessionid的cookie值到服务器,会导致无法获取当前用户的session值,从而无法将图片和当前用户关联起来。
解决办法就是通过get/post传递当前用户的SessionId到服务器(sessionid值也存储在cookie中,名称为ASP.NET_SessionId,但是这个cookie是httponly的,js无法读取==》HostOnly Cookie和HttpOnly Cookie),所以需要用服务器端代码来复制给客户端。
php可以通过session_id来重置sessionid
if (isset($_POST["PHPSESSID"])) { session_id($_POST["PHPSESSID"]); } else if (isset($_GET["PHPSESSID"])) { session_id($_GET["PHPSESSID"]); }
asp.net需要在Global.asax中的 Application_BeginRequest中获取get/post提交的sessionid值,然后生成ASP.NET_SessionId这个cookie来实现。
void Application_BeginRequest(object sender, EventArgs e) { string session_param_name = "ASPSESSID";//get/post提交的sessionid键名称,如果键名称不是这个自己修改变量值 string session_cookie_name = "ASP.NET_SessionId";//asp.net生成的记录cookie值的名称,这个不要修改 string SessionIDValue = HttpContext.Current.Request.Form[session_param_name]; if (string.IsNullOrEmpty(SessionIDValue))//传递了SessionId值则重置Session对应的cookie值 try { UpdateCookie(session_cookie_name, HttpContext.Current.Request.Form[session_param_name]); } catch (Exception) { Response.StatusCode = 500; Response.Write("Error Initializing Session"); } } void UpdateCookie(string cookie_name, string cookie_value) { HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookie_name); if (cookie == null) { cookie = new HttpCookie(cookie_name); HttpContext.Current.Request.Cookies.Add(cookie); } cookie.Value = cookie_value; HttpContext.Current.Request.Cookies.Set(cookie); }
然后swfupload或者upload设置附加表单提交值,附带上SessionID
swfupload
<script> var settings = { flash_url: "swfupload/swfupload.swf", upload_url: "/upload.ashx", post_params: {"ASPSESSID" : "<%=Session.SessionID %>""},//注意这里用了服务器端标签,所以这个代码一定要放在aspx之类的动态页里面,不能单独放js文件里面 //...其他配置 </script>
uploadify
<script> var settings = { swf: "uploadify.swf", uploader: "/upload.ashx", formData: {"ASPSESSID" : "<%=Session.SessionID %>""},//注意这里用了服务器端标签,所以这个代码一定要放在aspx之类的动态页里面,不能单独放js文件里面 //...其他配置 </script>
相关文章
加支付宝好友偷能量挖...
原创文章,转载请注明出处:如何设置asp.net sessionid获取用户session信息