当前位置: 移动技术网 > IT编程>开发语言>.net > 从别人那拷下来的几点Session使用的经验

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

2018年04月25日  | 移动技术网IT编程  | 我要评论

润枫水尚开盘价,街霸觉醒,5629小游戏

问:当页面中是否了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将不会在变化。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网