去年做的项目今年终于上线了,上线期间可真是出了很多的怪问题。先简单说下项目是用b/s系统 显示都是用的usercontrol代替page。
,不知道大家有没有用过。 前几天发现出了个怪问题,就是系统登录后 然后再注销退出,再登录的时候会发现点击系统menu上的任一项都会跳到登录界面。被系统T了出来。这个现象可真是怪,当时大家都在忙别的工作 这个现象也就没有在意,前几天没事,打开源代码看了看到底怎么回事。
调试了半天也没发现什么问题啊。看注销方法,清除session,转向登录界面,对啊。等下 突然发现注销后登陆界面url怎么还是登录进去的url啊 并没有改变为。。。。/logon.aspx啊,奇怪。马上想到了是这个问题了,突然想起server.transfer与request.redirect的区别了。
在这里再写下两者区别吧
1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Response.Redirect则十分灵活;
2. Server.Transfer可以将页面参数方便传递到指定页面;
3. 使用时,Server.Transfer跳到别的页面后,浏览器显示的地址不会改变,有时反而会造成误会,当然也有些场合需要这样的效果;
4. Server.Transfer可以减少客户端对服务器的请求;
看红色部分因为Server.Transfer()是在服务器端转向的,所以浏览器地址不会变,看来注销方法肯定是用的Server.Transfer()了,返回一看代码 果真是Server.Transfer(),我将Server.Transfer改成了Response.Redirect() 方法,再次试 果真没事了。

因为Server.Transfer()方法是发生在服务器端上 所以我分析是这样:
因为我们系统框架原因,我们是同一用一个page来加载不同的usercontrol来替换不同的page的 所以地址栏url永远是相同的,当注销的时候Server.Transfer()服务器将登录后url指向了logon.aspx,所以每次登陆后进行操作时加载不同usercontrol时会指向登录界面。

不知道想的对不对,寻求解答下。
posted on 2008-06-28 00:05  想到做不到  阅读(334)  评论(0编辑  收藏  举报