ASP.NET服务器控件封装-【事件】-1.2【数据回发】
<sessionState cookieless="UseUri" /> 2. 一般在Session超时或删除之后,SessionID保持不变. 因为Session过期后 会在服务器端清除数据, 但是SessionID保存在用户浏览器上, 所以只要浏览器不 关闭则HTTP头中的SessionID保持不变. 3.关闭浏览器后再访问, SessionID会不同. 4.每打开一个IE6窗口, SessionID都不同, 在IE6中两个窗口的Session不能共 享. 5.FireFox的标签页和新的FireFox窗口, SessionID都相同, 在FF的窗口和标 签页上Session能共享. 6.对于包含FrameSet的页面,比如:
如果后缀名是.htm并且.htm文件没有交给ASP.NET的ISAPI处理, 那么根据服务 器速度在每个Frame页面生成不同的SessionID, 再刷新后相同都等于最后一个 SessionID. 解决办法是将.htm后缀改成.aspx, 或者将.htm文件交给ASP.NET的ISAPI处理. (5)Session_End事件: 1. Session_End仅在InProc模式中可用 2. 关闭浏览器,Session_End是不会触发的。HTTP是一种无状态协议,服务器 没有办法知道你的浏览器是否已经关闭。 3. 当Session因为时间过期或调用Session.Abandon时,Session_End才会触发 .Session.Clear()仅仅是清除数据,但没有删除session。 4. Session_End由一个后台线程触发,使用工作者进程账号运行. 所以程序不 会通知发生的错误. 5. 在Session_End访问数据库要考虑权限问题. Session_End是用运行工作者 进程(aspnet_wp.exe)的帐号运行的,这个账号可以在machine.config中指定。因 此,在Session_End中,如果使用integrity security连接SQL,它将使用工作者 进程账号身份连接,这可能会引起登录失败. 6.因为Session_End是有独立线程出发的, 所以在Session_End中无法使用 HttpContext对象(Request,Response,Server等对象都在HttpContext中), 即无 法使用 Response.Redirect 和Server.Transfer等方法. 七.总结 我已经使用SqlServer模式对公司的多台服务器实现了Session共享, 服务器重 启也不会导致用户预定过程重新开始(预定过程需要的Session不会丢失).希望 本文对具体的Session服务器搭建人员有所帮助. |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |