在使用Session的过程中你可能还会遇到很多奇怪的问题,结束本节之前笔者列出了几条常见的FAQ,供大家参考:
为什么每次请求的SessionID都不相同?
可能是没有在Session里面保存任何信息引起的,即程序中任何地方都没有使用Session。只有在Session中保存了内容后,Session才会和浏览器进行关联,此时的SessionID将不会再变化。
为什么当我设置cookieless为true后,在重定向的时候会丢失Session?
当使用cookieless时,你必须使用相对路径替换程序中的绝对路径,如果使用绝对路径,ASP.NET将无法在URL中保存SessionID。
有办法知道应用程序的Session在运行时占用了多少内存吗?
没有办法,你可以通过观察IIS进程(InProc模式)或者aspnet_state进程(StateServer模式)大致估计。
有没有可能知道整个网站使用Session的用户列表?
对于InProc模式和StateServer模式很难,对于SqlServer模式你可以查询存储Session的表进行尝试。
当页面中设了frameset,发现在每个frame中显示页面的SessionID在第一次请求时都不相同,为什么?
原因是你的frameset是放在一个HTML页面上而不是ASPX页面。在一般情况下,如果frameset是aspx页面,当你请求页面时,它首先将请求发送到Web服务器,此时已经获得了SessionID,接着浏览器会分别请求Frame中的其他页面,这样所有页面的SessionID就是一样的,就是FrameSet页面的SessionID。然而如果你使用HTML页面做FrameSet页面,第一个请求将是HTML页面,当该页面从服务器上返回时并没有任何Session产生,接着浏览器会请求Frame里面的页面,这样,这些页面都会产生自己的SessionID,所以在这种情况下就可能出现这种问题。当你重新刷新页面时,SessionID就会一样,并且是最后一个请求页面的SessionID。