从别人那拷下来的几点Session使用的经验

问:当页面中是否了frameset,发现在每个frame中显示页面的SessionID在第一次请求时都不相同,为什么?
答:原因是你的frameset是放在一个htm页面上而不是ASPX页面。
在一般情况下,如果frameset是aspx页面,当你请求页面时,它首先将请求发送到Web服务器,此时已经获得了SessionID,接着浏览器会分别请求Frame中的其他页面,这样所有页面的SessionID就是一样的,就是FrameSet页面的SessionID。
然而如果你使用Html页面做FrameSet页面,第一个请求将是HTML页面,当该页面从服务器上返回是并没有任何Session产生,接着浏览器会请求Frame里面的页面,这样这些页面都会产生自己的SessionID,所以在这种情况下就会出现这种问题。当你重新刷新页面时,SessionID就会一样,并且是最后一个请求页面的SessionID。

问:是否可以将不同应用程序的Session保存在相同的SQL Server服务器的不同数据库上。
答:可以,请参考:
FIX: Using one SQL database for all applications for SQL Server session state may cause a bottleneck
http://support.microsoft.com/default.aspx?scid=kb;en-us;836680

问:在Session_End是我是否可以获得有效的HttpSessionState和HttpContext对象?
答:你可以在这个方法中获得HttpSessionState对象,可以直接使用Session来访问即可。但是不能获得HttpContext对象,因为该事件并没有和任何请求相关联,因此不存在上下文对象。

问:当我设置EnableSessionState为“ReadOnly”后,但是我在InProc模式下依然可以修改Session的值,这是为什么?
答:即使EnableSessionState标示为ReadOnly,但是在InProc模式下用户依然可以编辑Session。唯一不同的是,在请求过程中Session将不会被锁住。

问:当Session设置成cookieless后会有什么影响?
答:当把cookieless设置成true时,主要会有下面的约束:
1、在页面中不能使用绝对链接
2、在应用程序中在除了Http和Https之间的切换时需要完成一些其他的步骤。
如果发送一个链接给其他人,此时的URL里面将包含Session ID的信息,所以两个人将公用一个Session。

问:为了可以顺序访问Session的状态值,Session是否提供了锁定机制?
答:Session实现了Reader/Writer的锁机制:
当页面对Session具有可写功能(即页面有<%@ Page EnableSessionState="True" %>标记),此时直到请求完成该页面的Session持有一个写锁定。
当页面对Session具有只读功能(即页面有<%@ Page EnableSessionState="ReadOnly" %>标记),此时知道请求完成该页面的Session持有一个读锁定。
读锁定将阻塞一个写锁定;读锁定不会阻塞读锁定;写锁定将阻塞所有的读写锁定。这就是为什么两个框架中的同一个页面都去写同一个Session时,其中一个要等待另一个(稍快的那个)完成后,才开始写。

问:如果使用了cookieless,我该如何从HTTP页面定向到HTTPS?
答:请尝试下面的方法:
String originalUrl = "/fxtest3/sub/foo2.aspx"; 
String modifiedUrl = "https://localhost" + Response.ApplyAppPathModifier(originalUrl); 
Response.Redirect(modifiedUrl);

问:什么类型的对象可以保存在Session里?
答:这依赖使用的Session的模式,当使用的是进程内(InProc)的Session那么可以轻松的保存任何对象。如果你使用了非InProc的模式,则只能保存可以序列化和反序列化的对象,如果此时保存的对象不支持序列化,则不能保存到这种模式(非InProc)的Session里。

问:为什么每次请求的SessionID都不相同?
答:该问题可能是没有在Session里面保存任何信息引起的,即程序中任何地方都没有使用Session。当Session中保存信息之后SessionID将一直和浏览器相关,此时的SessionID将不会在变化。

(0)

相关推荐

  • 从别人那拷下来的几点Session使用的经验

    问:当页面中是否了frameset,发现在每个frame中显示页面的SessionID在第一次请求时都不相同,为什么? 答:原因是你的frameset是放在一个htm页面上而不是ASPX页面. 在一般情况下,如果frameset是aspx页面,当你请求页面时,它首先将请求发送到Web服务器,此时已经获得了SessionID,接着浏览器会分别请求Frame中的其他页面,这样所有页面的SessionID就是一样的,就是FrameSet页面的SessionID. 然而如果你使用Html页面做Frame

  • 华表CELL组件的应用

    南京天相软件有限公司    朱孝兵 本人所在单位于二○○二年购买了Cell组件,此期间使用Cell组件开发了不少项目,现将自己使用的一些感受及经验整理成文,抛砖引玉之作,期待得到大家指点. 安 装 篇 Cell组件是遵循ActiveX标准的控件,很容易安装到自己的开发环境中. 1.安装华表公司的Cell组件. 2.打开DELPHI,选择ComponentImport ActiveX Control-菜单. 3.在Import ActiveX窗体中选择Cell5.2 ActiveX Contro

  • 看别人怎么查QQ聊天记录 比较详细查询QQ聊天记录的方法?

    要想看或导出对方的QQ聊天记录,需要使用专门的黑客软件吗?许多人会说当然需要!其实并非如此,只要把QQ的主文件改一改,我们就可以无需其的黑客软件,也无需知道对方的qq密码,就可以在离线状态下登录别人的qq,查看他人的聊天记录,这回你的竞争对与MM聊些什么你就知道了,哈哈. 我们用来改qq主文件的软件是16进制文件编辑器Ultraedit,运行Ultraedit,点击"文件"菜单中的"打开"找到QQ安装目录下的qq.exe文件打开,单击"搜索"菜单

  • 如何防范别人盗你的qq号(盗别人的qq密码)

    请看-- 1.前提工作,你要去下载木马"冰河",和"NetxRAY",还有 "ExeBind".冰河是一个远程监控软件,是BO一类的东西,只要对方运行了服务端程序,他的系统就随时向你敞开!现在比较流行的是灰鸽子远程控制 ,NetxRAY 是可以用来看对方的IP的:Exebind ,可以把两个exe文件合并成一个exe文件,运行时,分别执行.使用方法?我不教,自己研究.然后,使用exebind把冰河的服务端程序和一个正常的程序合并到一起.例如:取名

  • 怎样让别人中木马-木马常用骗术大观

    怎样让别人中木马? 这是网友们问得最多的问题,零零散散的回答也有一些了,但总是很少,于是小鱼儿决定搜集众人的智慧和在下的一点经验写一篇专题文章.希望大家多多发言,完善此篇,为所有木马爱好者做出一点自己的贡献.目的是要让所有人了解木马常用骗术从而保护个人PC安全. 1.捆绑欺骗.把木马服务端和某个游戏捆绑成一个文件在QQ或邮件发给别人.服务端运行后会看到游戏程序正常打开,却不会发觉木马程序已经悄悄运行,可以起到很好的迷惑作用.而且即使别人以后重装系统了,他还是保存你给他的这个"游戏"的话

  • 另一种希望别人无法修改js的代码

    我们对js加密的目的是希望别人无法修改,那么我们可以在JS的复杂度上下点功夫,用模块化的开发,这个函数引用那个函数,这个对象继承自那个对象.....反反复复,很快别人就会晕掉.......当然以后自己调试或者修改的时候也会晕掉..........我随便说说.....大家不要打我... 其实俺想说的是,不希望别人修改,那么可以在JS的很多位置上加上一个自身有效性的检查,如果不对,那么就开始这里调用那里的把别人绕晕掉... 当然了,这个检查做的是否隐蔽,检查不符合后的善后是否完美就是程序员自己仔细思

  • qq防止别人登陆如何禁止别人登陆qq

    即时通讯软件QQ拥有越来越多的用户,而QQ号也成为人们继手机号之后又一主要联系方式.但如果你不想让你同事.同学.亲戚和朋友利用你机器中的QQ神聊瞎侃和传输不良信息,不妨试试如下方法: 当然,如果你是在公司局域网禁止别人qq登录,限制上班qq聊天的行为,则推荐你使用专业的网络管理软件--聚生网管(下载地址:http://www.grabsun.com/wangguan.html)就可以了,你只需要将聚生网管安装在局域网一台电脑上,比如你自己或者经理的电脑上,就可以扫描到局域网所有电脑,点点鼠标就可

  • 防止别人盗链的好方法推荐

    在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里.而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法: 1.设置你的服务器的iis,给doc等后缀名做映射 2.在向客户端发送时设置其contenttype 下面详细说明方法2 <% Response.Buffer = true Response.Clear dim url Dim fso,fl,flsize dim Dname Dim objStream,Con

  • 预防PHPDDOS的发包攻击别人的方法(iis+linux)

    说下防止PHPDDOS发包的方法 复制代码 代码如下: if (eregi("ddos-udp",$read)) { fputs($verbinden,"privmsg $Channel :ddos-udp – started udp flood – $read2[4]\n\n"); $fp = fsockopen("udp://$read2[4]", 500, $errno, $errstr, 30); if (!$fp) { $fp = fs

  • springboot接收别人上传的本地视频实例代码

    package com.videobackend.controller; import java.io.File; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.springframework.beans.factor

随机推荐