诡异的【session丢失】和【<img src="">标签】

     项目发布到服务器上面了,但是客户在使用的时候发现,只要进入新增页面和修改页面。再进行操作就会自动跳转到登陆页面(我设置了session保存用户登陆信息),而别的页面就不会出现这个问题。从下午开始找个问题,开始以为不知道只有这两个页面有问题,以为全部都是这样的问题,是IIS的设置问题。我将session的超时时间设置了3个小时,发现还是会跳转到登陆页面。也在web.config文件里面设置了超时时间。但是效果还是一样的。自己测试了一下午,发现只有新增页面和修改页面会出现这样的问题(本机测试没问题/测试服务器上测试也没问题)。经过几次实验,发现确实只有这两个页面会有问题,那就可以断定:不是IIS设置问题,也不是web.config的问题。本地调试也不出现这样的情况,没办法,只能等客户下班之后,没人用了才到正式服务器上去慢慢的调试,最后想个笨办法,将其中一个页面的.cs文件里面的代码一句一句的删掉,可没想到我都将cs文件里面的代码全部删除了,还是会出现这样的情况,我当时就纳闷了。不是事件的问题,难道是HTML页面出了问题???

    既然耐着性子删了cs文件的代码。我就继续删!将aspx页面里面的HTML代码和JS代码也一个一个的删掉,一个一个控件删掉测试,从下午上班一直测试到晚上11点,眼睛都看花了,终于,在我将aspx页面的其中几个控件删除之后发现问题了!页面不跳转了!这下来劲了,肯定是这几个控件的原因,于是乎,我就一个一个控件还原回去,不跳转!继续还原!!当我还原到<img src="" >这个控件的时候测试,发现问题了!只要我一加上<img src="">这个标签!页面就跳转到登陆页面了。问题肯定出在这了!但是我又想不通了,为什么就这个HTML标签一加上就会出问题,这应该不关session什么事啊,怎么会加上这个标签页面就直接跳转了呢?

     在网上找了下资料,没找到相关的资料,后来试着将img 标签的src=""加上图片,src="imges/001.jpg" 再测试,发现页面不跳转了!!原来问题出现在这里!

src=""为空的情况下,可能导致session丢失!跟经理说了下这个情况,他也很惊奇还没见过一个HTML标签会导致session丢失的情况,因为在本地和测试服务器上测试的时候都没这样的情况,后来猜测了下,可能是IIS的问题,可能是IIS解析的时候解析到src=""这个地方解析不了,导致程序出问题。但这只是个人猜测,正式服务器上我也没权力当时去打补丁,一个大公司的正式服务器,我要打补丁去了,那他们别的网站和系统不全当机了?所以就只要想了个办法,将src=""里面加上图片,幸好这个img标签是隐藏起来的,加了也不影响界面。呵呵。。。

    最让人郁闷的是我测试的时候是用Symantec pcAnywhere这个软件远程连接到的正式服务器上。反应慢得可以,简直比电脑没装显卡驱动还慢,不过累也累了,以后碰到这样的情况就有经验了。 

posted @ 2009-06-11 00:11 kyne 阅读(3890) 评论(100) 编辑 收藏

 回复 引用 查看   
#1楼2009-06-11 01:09 | 隨風.NET      
估计应该不会这样吧
 回复 引用 查看   
#2楼2009-06-11 01:22 | 木鱼      
可以检测一下IE的通讯信息,或在Firefox中使用插件来嗅探。当 src="" 的时候并非没有请求,而是相当于请求了当前网页的同级目录“./”,虽然结果都是不显示图像。但是对于./的请求可能导致了你的什么地方出现了问题而导致session丢失。

具体的情况,可以用Http协议分析工具嗅探一下可知。

PS,难道博客园的标题里面允许用HTML字符?

 回复 引用 查看   
#3楼2009-06-11 01:34 | 一点心情      
呵呵,很多情况都是这样,有时候少写一个标签也会出现这样的问题,多半用户没有发现,但是网站大了,个别用户就出现问题了。我想问下你的session 管理设置了吗
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>


 回复 引用 查看   
#4楼2009-06-11 02:10 | 温景良(Jason)      
呵呵,还真没见过
 回复 引用 查看   
#5楼[楼主]2009-06-11 02:18 | kyne      
回复3楼:
这个我设置了,开始是设置的默认的那个,后来怀疑是别的原因,就换成了这个,
回复2楼:
其实我这个img标签是用来检测图片附件大小的,选择文件之后,JS会将选择的图片传到img里面。

 回复 引用 查看   
#6楼2009-06-11 02:18 | Gray Zhang      
当src为空时,在ie下会请求当前页面,同时发起一个新的session……
 回复 引用 查看   
#7楼[楼主]2009-06-11 02:28 | kyne      
--引用--------------------------------------------------
Gray Zhang: 当src为空时,在ie下会请求当前页面,同时发起一个新的session……
--------------------------------------------------------
你是说当src为空的时候,IE自动创建一个新的session还是将原有session更新掉?如果是更新的话,那应该是更新成空值了,所以系统检测的时候就会退出,直接跳转到登陆界面。是这样吗?

 回复 引用 查看   
#8楼2009-06-11 05:08 | 斯克迪亚      
--引用--------------------------------------------------
Gray Zhang: 当src为空时,在ie下会请求当前页面,同时发起一个新的session……
--------------------------------------------------------
那为何单机时不会产生问题呢?

 回复 引用 查看   
#9楼2009-06-11 05:09 | 夜间悄悄声      
没有见过这种情况!你这些说了。还学习了!但是感觉是SRC出现的问题?可能性不大
 回复 引用 查看   
#10楼2009-06-11 07:50 | 徐少侠      
--引用--------------------------------------------------
木鱼:
<br /><br />
PS,难道博客园的标题里面允许用HTML字符?
--------------------------------------------------------
使用&转义,啥字符都可以显示的

 回复 引用 查看   
#11楼[楼主]2009-06-11 08:23 | kyne      
--引用--------------------------------------------------
夜间悄悄声: 没有见过这种情况!你这些说了。还学习了!但是感觉是SRC出现的问题?可能性不大
--------------------------------------------------------
我个人感觉是有些时候会有问题。--引用--------------------------------------------------
徐少侠: --引用--------------------------------------------------
木鱼:
&lt;br /&gt;&lt;br /&gt;
PS,难道博客园的标题里面允许用HTML字符?
--------------------------------------------------------
使用&amp;转义,啥字符都可以显示的
--------------------------------------------------------
哥们,我没使用什么转义符号,直接输入的。

 回复 引用 查看   
#12楼2009-06-11 08:26 | 小哈      
借鉴一下
 回复 引用   
#13楼2009-06-11 08:36 | Ryan Gene
我猜用了FORM验证了吧?
 回复 引用 查看   
#14楼2009-06-11 08:39 | HuaZai      
搞笑···
 回复 引用   
#15楼2009-06-11 08:44 | 灌吸[未注册用户]
现在做项目还有用session?
 回复 引用 查看   
#16楼2009-06-11 08:45 | 游侠_1      
至少谢楼主的分享,楼主好人
 回复 引用   
#17楼2009-06-11 08:47 | jacky.W[未注册用户]
检查下有了img后cookie是否相同,是否确实新增了一个session,是否以后session替换了
 回复 引用 查看   
#18楼2009-06-11 08:49 | ︶ㄣ木べ头      
--引用--------------------------------------------------
灌吸: 现在做项目还有用session?
--------------------------------------------------------
不用session用什么?
楼主的问题真很诡异~~

 回复 引用 查看   
#19楼2009-06-11 08:53 | 为爱走天涯      
以前也遇到过无敌退出到登录页面的问题,不过我那是IIS的的应用程序池设置的内存太少了,导致内存一满就被自动清空了.
 回复 引用 查看   
#20楼2009-06-11 09:04 | James.Ying      
前段时间博客园好像有关于这个的帖子 ,你可以找一下
 回复 引用 查看   
#21楼2009-06-11 09:04 | heros      
src=""则会请求当前目录,当前目录下的默认首页则会被请求,检查一下默认首页在加载时是否有清空session的操作
 回复 引用 查看   
#22楼2009-06-11 09:06 | Xuefly      
--引用--------------------------------------------------
斯克迪亚: --引用--------------------------------------------------
Gray Zhang: 当src为空时,在ie下会请求当前页面,同时发起一个新的session……
--------------------------------------------------------
那为何单机时不会产生问题呢?
--------------------------------------------------------
这是为什么呢?

 回复 引用 查看   
#23楼[楼主]2009-06-11 09:09 | kyne      
--引用--------------------------------------------------
heros: src=&quot;&quot;则会请求当前目录,当前目录下的默认首页则会被请求,检查一下默认首页在加载时是否有清空session的操作
--------------------------------------------------------
那这个问题为什么在我本地和测试服务器上就不会出现?同样的程序,同样的代码。一放到正式服务器上就出问题。测试服务器和本地IIS上都没有这个问题。我觉得应该不是这个问题

 回复 引用 查看   
#24楼2009-06-11 09:12 | Xuefly      
--引用--------------------------------------------------
kyne: --引用--------------------------------------------------
heros: src=&amp;quot;&amp;quot;则会请求当前目录,当前目录下的默认首页则会被请求,检查一下默认首页在加载时是否有清空session的操作
--------------------------------------------------------
那这个问题为什么在我本地和测试服务器上就不会出现?同样的程序,同样的代码。一放到正式服务器上就出问题。测试服务器和本地IIS上都没有这个问题。我觉得应该不是这个问题
--------------------------------------------------------
如果真如上面所说的那样。问一下LZ在本机那个目录下的默认首页和服务器上对应目录的默认首页一致吗?

 回复 引用 查看   
#25楼2009-06-11 09:33 | good man      
我早上专门写了一个DEMO测试了一下,
是按照你说的写的,但是我放到IIS上面,并没有出现这个问题啊,
希望加我的MSN:caodaiming@live.cn来详细沟通

 回复 引用   
#26楼2009-06-11 09:36 | Scoprio.Mvc[未注册用户]
我也碰到过相似的问题.
页面里有<img src="">导致页面被执行两次

 回复 引用 查看   
#27楼2009-06-11 09:43 | 陛下      
是不是可以用 httpwatcher 等软件监测一下?不久前我就用这东西了解了 ie8 里站点跳转 cookie 信息丢失的问题。
话说回来,善于调试确实需要功力啊!


 回复 引用 查看   
#28楼2009-06-11 09:44 | flyingchen      
奇!!
 回复 引用 查看   
#29楼2009-06-11 09:46 | 十四      
@灌吸
你用什么?viewstate?cookie?装什么呢

 回复 引用 查看   
#30楼2009-06-11 09:47 | heros      
--引用--------------------------------------------------
Xuefly: --引用--------------------------------------------------
如果真如上面所说的那样。问一下LZ在本机那个目录下的默认首页和服务器上对应目录的默认首页一致吗?
--------------------------------------------------------

 回复 引用 查看   
#31楼2009-06-11 09:50 | 菩提树下的杨过      
基本上现在做大型web项目,都不怎么喜欢用session了,这东西不但容易丢失,而且是存在服务器端的,并发一多,服务器开销很大,基本用cookie就完全能解决问题了(当然要注意加密存储等安全措施)
 回复 引用 查看   
#32楼2009-06-11 09:53 | Genius Zhang      
--引用--------------------------------------------------
Gray Zhang: 当src为空时,在ie下会请求当前页面,同时发起一个新的session……
--------------------------------------------------------
我记得在FF下会产生类似的问题,IE下好像并不会这样子

http://www.julyhome.cn/article.asp?id=18
看看这里,哈哈,我也是测了很久才测出来这个问题的。。。

 回复 引用 查看   
#33楼2009-06-11 09:55 | Genius Zhang      
还有我后面也遇到了INPUT中TYPE为IMAGE的元素,如果SRC设为空也会导致这个问题。。。
 回复 引用 查看   
#34楼2009-06-11 09:55 | 不若相忘于江湖      
这真是一个怪问题。。

以候要小心了。。。

楼主可以把这个问题发到MSDN上。

那有大把的牛人在等着。。

 回复 引用 查看   
#35楼2009-06-11 10:01 | Genius Zhang      
这个并不是IIS解析引起的,img只是客户端代码,它并没有必要去解析它,当成文本输出,问题在于SESSION的机制,加上浏览器的解析引起的
 回复 引用 查看   
#36楼2009-06-11 10:10 | Otis's Technology Space      
繼續關注中。。
 回复 引用 查看   
#37楼2009-06-11 10:24 | 韦恩卑鄙      
用了 form 验证了吧

img src="" 究竟访问了什么

得测试下

 回复 引用 查看   
#38楼2009-06-11 10:28 | 韦恩卑鄙      
测试方式
建立一个 default.aspx
加入 <img src="" />
浏览器浏览 选择图片属性
得到图片地址

"http://localhost:12177/"

说明图片并不是什么都没做 而是访问了当前页面的所在目录。
这个默认的访问作了一些事情 lz没有跟踪到 也许是这个访问直接作废了session.

一般临时的img 最好指定一个1像素的实际图片。

 回复 引用 查看   
#39楼2009-06-11 10:37 | cloudgamer      
能写个简单的页面给测试一下吗
 回复 引用 查看   
#40楼2009-06-11 10:41 | 古道轻风      
这个倒还真没遇见过,只是知道<img src="#">的时候,页面会PageLoad两次。
 回复 引用 查看   
#41楼2009-06-11 10:42 | heros      
--引用--------------------------------------------------
菩提树下的杨过: 基本上现在做大型web项目,都不怎么喜欢用session了,这东西不但容易丢失,而且是存在服务器端的,并发一多,服务器开销很大,基本用cookie就完全能解决问题了(当然要注意加密存储等安全措施)
--------------------------------------------------------
可以创建StateServer , 或用SqlServer存Session。Cookie有可被复制性,加密也是无济于事。


 回复 引用 查看   
#42楼2009-06-11 10:58 | Tinn      
关注一下。虽然没有遇到过类似的情况
 回复 引用 查看   
#43楼2009-06-11 11:16 | 大力      
"我将session的超时时间设置了3个小时"

程序无法控制服务器的内存,当服务器内存不足或超出程序池限制内存时,session会自动注销,它不会管你程序设置了多久.

特别是32位系统,我测试8G的内存用到5G后session只能保存几分钟,升级到64位可以解决此问题.

 回复 引用   
#44楼2009-06-11 11:46 | zheciniming [未注册用户]
我考
有这么复杂么
写一个简单的页面,里面就一个img标签
然后client抓包或者用fiddler, server看iis log
不是一下子就看出来了么
猜什么猜阿

 回复 引用   
#45楼2009-06-11 12:37 | Tonyxxxxxxxxxx[未注册用户]
应该是这样:虽然src="", 浏览器还是试图从web server上去抓东西,估计你用的是form验证,但是被抓的这个东西违反了form验证的规则,然后就跳转到登陆页面.

应该只是form验证问题.

 回复 引用 查看   
#46楼[楼主]2009-06-11 12:44 | kyne      
具体是什么原因,这个还得去查下。诡异的就是同样的代码,在本地服务器和测试服务器上。都不会丢失掉。只有在正式服务器上会丢失,看了下兄弟们的回复,如果是那样的原因的话,那应该在本地和测试服务器上都应该会产生同样的错误啊。我觉得奇怪的就是这个地方。
 回复 引用 查看   
#47楼2009-06-11 13:50 | canbeing      
--引用--------------------------------------------------
Tonyxxxxxxxxxx: 应该是这样:虽然src=&quot;&quot;, 浏览器还是试图从web server上去抓东西,估计你用的是form验证,但是被抓的这个东西违反了form验证的规则,然后就跳转到登陆页面.

应该只是form验证问题.
--------------------------------------------------------
我也觉得是这样的

 回复 引用 查看   
#48楼2009-06-11 14:11 | Aspgreener      
改用session的状态服务吧!
-----------------------------------------
专注于自己的网站。http://www.xiaoshiyiluokuang.com

 回复 引用 查看   
#49楼2009-06-11 14:25 | 彭成刚      
好文就要支持啊!!
 回复 引用 查看   
#50楼2009-06-11 14:43 | 代码乱了      
好像以前也遇到过,真的很诡异
 回复 引用 查看   
#51楼2009-06-11 14:47 | Mien Ng      


我给楼主分析下

先说几点结论:
1、并不是所有浏览器都会出现这种情况(IE上会出现)。
2、要满足特定的条件才会出现这种情况(比如index/default跳转到login.aspx)。

再说根源:

根源:在于在IE下当image 标签的src为空时或图片不存在,会请求图片所在目录或根目录。而刚好index/default又跳转到login,而请求login时会清空session.


(上述index/default login 为假想,仅供说明用,据实际情况改变也改变)

 回复 引用 查看   
#52楼2009-06-11 14:50 | Mien Ng      
补充下,上述 index/default为服务器默认文档。
 回复 引用 查看   
#53楼2009-06-11 15:14 | 菩提树下的杨过      
--引用--------------------------------------------------
heros: --引用--------------------------------------------------
菩提树下的杨过: 基本上现在做大型web项目,都不怎么喜欢用session了,这东西不但容易丢失,而且是存在服务器端的,并发一多,服务器开销很大,基本用cookie就完全能解决问题了(当然要注意加密存储等安全措施)
--------------------------------------------------------
可以创建StateServer , 或用SqlServer存Session。Cookie有可被复制性,加密也是无济于事。

--------------------------------------------------------

会话(Session)貌似也可以劫持的吧?百度一下"Session劫持"就有N多讲这个的(虽然我不懂会话劫持,呵),我不认为Session一定能保证安全,当然谈这个有点跑题了,什么时候希望园子里有高人能专门开个专贴讨论一个session与cookie的安全性对比,不过综合来看,用cookie要比session好,原因有二:1.cookie开销小,二。可以方便实现一些类似“一周内无需重复登录”之类的功能

 回复 引用 查看   
#54楼2009-06-11 15:52 | Mien Ng      
@Scoprio.Mvc
同理,见51楼


 回复 引用 查看   
#55楼2009-06-11 16:20 | cloudgamer      
--引用--------------------------------------------------
kyne: 具体是什么原因,这个还得去查下。诡异的就是同样的代码,在本地服务器和测试服务器上。都不会丢失掉。只有在正式服务器上会丢失,看了下兄弟们的回复,如果是那样的原因的话,那应该在本地和测试服务器上都应该会产生同样的错误啊。我觉得奇怪的就是这个地方。
--------------------------------------------------------

即使img导致读两次页面也不会丢失session的吧
如果只是正式服务器有问题
可能是img某个怪异行为 刚好触发了 服务器某个设置了“丢失session” 的操作
例如 两次快速读取被看成恶意攻击自动丢失session之类的

 回复 引用 查看   
#56楼2009-06-11 16:21 | Freewind      
学习, 还没碰到过..
 回复 引用 查看   
#57楼[楼主]2009-06-11 16:35 | kyne      
--引用--------------------------------------------------
cloudgamer: --引用--------------------------------------------------

kyne: 具体是什么原因,这个还得去查下。诡异的就是同样的代码,在本地服务器和测试服务器上。都不会丢失掉。只有在正式服务器上会丢失,看了下兄弟们的回复,如果是那样的原因的话,那应该在本地和测试服务器上都应该会产生同样的错误啊。我觉得奇怪的就是这个地方。

--------------------------------------------------------



即使img导致读两次页面也不会丢失session的吧

如果只是正式服务器有问题

可能是img某个怪异行为 刚好触发了 服务器某个设置了“丢失session” 的操作

例如 两次快速读取被看成恶意攻击自动丢失session之类的
--------------------------------------------------------
嗯,确实有可能.

 回复 引用 查看   
#58楼2009-06-11 16:40 | heros      
--引用--------------------------------------------------
菩提树下的杨过: --引用--------------------------------------------------
heros: --引用--------------------------------------------------
菩提树下的杨过: 基本上现在做大型web项目,都不怎么喜欢用session了,这东西不但容易丢失,而且是存在服务器端的,并发一多,服务器开销很大,基本用cookie就完全能解决问题了(当然要注意加密存储等安全措施)
--------------------------------------------------------
可以创建StateServer , 或用SqlServer存Session。Cookie有可被复制性,加密也是无济于事。

--------------------------------------------------------

会话(Session)貌似也可以劫持的吧?百度一下&quot;Session劫持&quot;就有N多讲这个的(虽然我不懂会话劫持,呵),我不认为Session一定能保证安全,当然谈这个有点跑题了,什么时候希望园子里有高人能专门开个专贴讨论一个session与cookie的安全性对比,不过综合来看,用cookie要比session好,原因有二:1.cookie开销小,二。可以方便实现一些类似“一周内无需重复登录”之类的功能
--------------------------------------------------------
当然没有绝对的安全。Cookie和Session适用的场合不一样。重要数据总是不方便放在客户端,排除安全性不说,客户端的东西还有着比服务器端有更多的不确定。Session就是为了解决服务器端个人数据存储问题,放在服务器端当然要使用服务器资源,这可以通过状态服务器或数据库来解决。Session是有被劫持的可能,正如你说这个过程的实现并不容易,而Cookie是客户端的文件,可以很容易的获取拷备,而Cookie就是泄露Session信息的一种重要途径,如果在服务器端实现Session id和客户端的信息绑定,就可以很好的避免劫持的危险。假如客户端禁用了Cookie怎么办呢?当然Session的应用肯定离不开Cookie,毕竟Session id还放Cookie里呢。另外:1.cookie开销小是相对服务器来说,对于网络来说呢,传输也要资源的,传输到服务端后服务端也还需要用资源来暂存cookie信息,2.可以方便实现一些类似“一周内无需重复登录”之类的功能,这正是Cookie的适用场合,但要客户就要注意不要在网吧使用。
我觉得还是应该将Cookie和Session放在合适的场合来应用。

 回复 引用 查看   
#59楼2009-06-11 16:46 | heros      
--引用--------------------------------------------------
kyne: --引用--------------------------------------------------
cloudgamer: --引用--------------------------------------------------

kyne: 具体是什么原因,这个还得去查下。诡异的就是同样的代码,在本地服务器和测试服务器上。都不会丢失掉。只有在正式服务器上会丢失,看了下兄弟们的回复,如果是那样的原因的话,那应该在本地和测试服务器上都应该会产生同样的错误啊。我觉得奇怪的就是这个地方。

--------------------------------------------------------




即使img导致读两次页面也不会丢失session的吧

如果只是正式服务器有问题

可能是img某个怪异行为 刚好触发了 服务器某个设置了“丢失session” 的操作

例如 两次快速读取被看成恶意攻击自动丢失session之类的
--------------------------------------------------------
嗯,确实有可能.
--------------------------------------------------------
快速读取应该不会造成session丢失,一个网址被打开时不是只有一个request。我觉得你应该先在本地将默认首页设置成和服务器上一样,再配合httpwatch调试查看。这个问题本身并不诡异。

 回复 引用 查看   
#60楼[楼主]2009-06-11 16:48 | kyne      
@heros
heros的分析确实挺合理,什么场合用什么,才是最好的。

没遇到


 回复 引用 查看   
#62楼2009-06-11 17:02 | Old      

同意51楼
------------------------------------

我做了个简单的Demo,用 HttpWatch 截了4张图,发在我的相册里。

地址:http://www.cnblogs.com/bruceleeliya/gallery/195118.html

------------------------------------
:-)

 回复 引用 查看   
#63楼2009-06-11 17:03 | Old      
如果看不清图片的话,点击图片下面的链接
“Original Image”
:-)

 回复 引用 查看   
#64楼2009-06-11 17:29 | Mien Ng      
--引用--------------------------------------------------
Old: 如果看不清图片的话,点击图片下面的链接
“Original Image”
:-)
--------------------------------------------------------

谢谢配图啊:)

 回复 引用 查看   
#65楼2009-06-11 17:37 | Old      
需要下载 HttpWatch 的朋友,这里给出个链接:
因为是传在空间里的,总大小11M,我分成了8个卷。

------------------------begin-------------------------

1,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part01.rar
2,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part02.rar
3,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part03.rar
4,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part04.rar
5,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part05.rar
6,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part06.rar
7,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part07.rar
8,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-
v4.2.42.part08.rar

-------------------------end--------------------------
:-)

 回复 引用 查看   
#66楼2009-06-11 17:53 | 菩提树下的杨过      
heros的分析确实比较客观,session与cookie的是非先放一边,还是回到这个问题的解决办法上吧,看完大家的分析,个人觉得如果仅仅是因为src为空引起的,可以给img标签上加一个 onerror="this.src='xxx.gif'" (这里的xxx.gif我通常都是设置成一个1*1的空白图片,且保证能访问),这样的话就算图片加载出错或为空,也会默认加载一个空图片,楼主可以试试
 回复 引用 查看   
#67楼[楼主]2009-06-11 17:53 | kyne      
--引用--------------------------------------------------
Old:
同意51楼
------------------------------------

我做了个简单的Demo,用 HttpWatch 截了4张图,发在我的相册里。

地址:http://www.cnblogs.com/bruceleeliya/gallery/195118.html

------------------------------------
:-)

--------------------------------------------------------
谢谢哥们提供图片,虽然看不是很清楚,但是还是非常感谢哈。。。

 回复 引用 查看   
#68楼[楼主]2009-06-11 17:56 | kyne      
--引用--------------------------------------------------
菩提树下的杨过: heros的分析确实比较客观,session与cookie的是非先放一边,还是回到这个问题的解决办法上吧,看完大家的分析,个人觉得如果仅仅是因为src为空引起的,可以给img标签上加一个 onerror=&quot;this.src='xxx.gif'&quot; (这里的xxx.gif我通常都是设置成一个1*1的空白图片,且保证能访问),这样的话就算图片加载出错或为空,也会默认加载一个空图片,楼主可以试试
--------------------------------------------------------
呵呵,我在文章里面所说的解决办法就是不让src=“”为空,我当时是添加了个颜色跟背景一样的图片。

 回复 引用 查看   
#69楼[楼主]2009-06-11 17:56 | kyne      
--引用--------------------------------------------------
Old: 需要下载 HttpWatch 的朋友,这里给出个链接:
因为是传在空间里的,总大小11M,我分成了8个卷。

------------------------begin-------------------------

1,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part01.rar
2,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part02.rar
3,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part03.rar
4,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part04.rar
5,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part05.rar
6,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part06.rar
7,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-v4.2.42.part07.rar
8,
http://files.cnblogs.com/bruceleeliya/HttpWatchPro-
v4.2.42.part08.rar

-------------------------end--------------------------
:-)
--------------------------------------------------------
哥们,多话不说了,谢谢了。

 回复 引用 查看   
#70楼2009-06-11 17:59 | Old      
@kyne
清楚的图片地址:

1 第一次访问login.aspx页面 (注意:此时没有cookies)
http://www.cnblogs.com/images/cnblogs_com/bruceleeliya/195118/o_f1.JPG

2 输入用户名和密码后的登录成功返回页面 (注意:此时的 ASP.NET_SessionId 的值)
http://www.cnblogs.com/images/cnblogs_com/bruceleeliya/195118/o_f2.JPG

3 转到需要验证是否登录的 session.aspx 页面 (注意:此时的 ASP.NET_SessionId 的值)
http://www.cnblogs.com/images/cnblogs_com/bruceleeliya/195118/o_f3.JPG

4 在session.aspx 页面加载时候,IE在遇到 src="" ,所发出的请求 (注意:此时的 ASP.NET_SessionId 的值)
http://www.cnblogs.com/images/cnblogs_com/bruceleeliya/195118/o_f4.JPG


 回复 引用 查看   
#71楼2009-06-11 18:00 | 菩提树下的杨过      
另外关于Symantec pcAnywhere,我以前都是这个来管理的(好象是11版本),这个软件我记得如果远程管理途中,控制机死机或停电,会引起服务器关机!(可能是控制机故障后,无法发送验证信息到服务器,导致服务器误认为操作不安全,出于安全考虑,于是自作聪明的把服务器给关掉了),从那以后,就再也不用这个远程管理了,不知道现在的版本有没有改进
 回复 引用 查看   
#72楼[楼主]2009-06-11 18:06 | kyne      
@Old
多谢了。。非常感谢,唉...还是好人多哇。呵呵。。。

 回复 引用 查看   
#73楼[楼主]2009-06-11 18:07 | kyne      
--引用--------------------------------------------------
菩提树下的杨过: 另外关于Symantec pcAnywhere,我以前都是这个来管理的(好象是11版本),这个软件我记得如果远程管理途中,控制机死机或停电,会引起服务器关机!(可能是控制机故障后,无法发送验证信息到服务器,导致服务器误认为操作不安全,出于安全考虑,于是自作聪明的把服务器给关掉了),从那以后,就再也不用这个远程管理了,不知道现在的版本有没有改进
--------------------------------------------------------
我也一直在用,好像我还没碰到过这样的情况。

 回复 引用 查看   
#74楼2009-06-11 18:21 | Sky_Dream      
真太诡异了,这也受影响~~~~~~
 回复 引用 查看   
#75楼2009-06-11 20:08 | Sam Lin      
帮你测试过,当<img src="" />时,加载或回调该页面的时候会直接调用该页面所属的目录下的Default.aspx页面

当目录下没有Default.aspx页面的时候可能会直接导致Session的丢失

 回复 引用 查看   
#76楼2009-06-11 20:30 | 菩提树下的杨过      
我也刚详细测试了下src=""的影响,比较意外的是,直接把src=""去掉,即<img alt="test" />居然没问题,呵呵,详细测试过程已经记录在http://www.cnblogs.com/yjmyzz/archive/2009/06/11/1501654.html里了,看来以后要特别注意img标签的src属性了!
 回复 引用 查看   
#77楼[楼主]2009-06-11 20:59 | kyne      
@菩提树下的杨过
呵呵,费心了...谢谢了。

 回复 引用 查看   
#78楼2009-06-11 21:25 | GuZuFeng      
我曾经遇到因为<img src="">的情况下,服务器会加载两次页面,后来在网上查到信息关于img 标签中的src为空时,服务器会重新加载页面,这个img标签有时很古怪
 回复 引用 查看   
#79楼2009-06-11 22:32 | 木鱼      
@Old
第四张图中虽然返回了403错误,但是并没有 set-cookies操作,因此是不会清除本地的Cookies记录的。真正原因另有乾坤。
博主还是尽量自己抓个包来分析吧,这样才能看出来端倪。用HttpAnalyer抓个包另存一下传上来,大家可以一起分析下。

 回复 引用   
#80楼2009-06-11 22:49 | cnkiminzhuhu[未注册用户]
学习了,长见识了。以后注意
 回复 引用 查看   
#81楼[楼主]2009-06-12 02:00 | kyne      
--引用--------------------------------------------------
木鱼: @Old

第四张图中虽然返回了403错误,但是并没有 set-cookies操作,因此是不会清除本地的Cookies记录的。真正原因另有乾坤。
<br />
博主还是尽量自己抓个包来分析吧,这样才能看出来端倪。用HttpAnalyer抓个包另存一下传上来,大家可以一起分析下。
--------------------------------------------------------
我想问下,在我的机器上没办法直接登陆正式服务器的网站,因为客户的公司保密性要求比较高,我只能通过Symantec pcAnywhere软件连到测试服务器上,再在测试服务器上通过远程桌面连接到正是服务器(测试服务器也没办法访问正式服务器的网页)才能在正式服务器上登陆网页。用HttpAnalyer抓不到吧?
如果只是要测试代码的话,我本地倒是有源码,明天上班的时候再去测试下。哦,应该是说今天了。呵呵。
谢谢大家了。

 回复 引用 查看   
#82楼2009-06-12 05:48 | Chester      
It is none of business with session. src="" means that you issued a GET / HTTP /1.1. That redirected you to the default page of your web site.

Chester in Calgary

 回复 引用 查看   
#83楼2009-06-12 08:55 | mylhei      
跟我情况完全一样,知识我没有发现有什么控件的问题。郁闷
 回复 引用 查看   
#84楼2009-06-12 08:55 | 木鱼      
@kyne
在哪里登,在哪里抓。HttpAnalyzer装过就能用,甚至可以使绿色版的。

 回复 引用 查看   
#85楼[楼主]2009-06-12 10:37 | kyne      
--引用--------------------------------------------------
木鱼: @kyne
在哪里登,在哪里抓。HttpAnalyzer装过就能用,甚至可以使绿色版的。
--------------------------------------------------------
哥们能否提供下这个软件的使用方法?第一次使用这个软件,不怎么会...

 回复 引用 查看   
#86楼2009-06-12 10:54 | 昊子      
--引用--------------------------------------------------
Gray Zhang: 当src为空时,在ie下会请求当前页面,同时发起一个新的session……
--------------------------------------------------------
这个应该是最合理的解释。

应该是新的SessionID覆盖到了本地Cookies
可以使用封包软件验证此推测

 回复 引用   
#87楼2009-06-12 11:01 | Honk[未注册用户]
昨天也在為phpbb後臺增加功能時也遇到了類似的問題
當src或href屬性為空時,IE和其他瀏覽器表現不一致
http://soido.org/blog/649

 回复 引用 查看   
#88楼2009-06-12 11:13 | 木鱼      
@kyne
打开IE,浏览页面。在工具栏左侧的绿色开始箭头右侧的下拉箭头下面选择最下面的“Select Running Process”(选择正在运行的进程),在弹出的窗口中选中IE的进程。此时再在IE中浏览所有数据就都会被它拦截了。

记录文件可以用save as保存为日志文件。

 回复 引用 查看   
#89楼[楼主]2009-06-12 11:54 | kyne      
我刚才测试了下,程序部署在我本机上的IIS上,我浏览页面sessionID 那行的value值一直没有改变。
因为这是在本地测试。本地在一直都不会清空掉session;
不过login.aspx.cs文件里面确实有清空session的操作,应该就是这个原因,才将session的值清空掉了。
感谢各位了。呵呵

 回复 引用   
#90楼2009-06-12 12:51 | elaner1[未注册用户]
img=""页面会执行两次。我遇到过。应是IE的问题
 回复 引用 查看   
#91楼2009-06-12 18:20 | heros      
--引用--------------------------------------------------
kyne: 我刚才测试了下,程序部署在我本机上的IIS上,我浏览页面sessionID 那行的value值一直没有改变。
因为这是在本地测试。本地在一直都不会清空掉session;
不过login.aspx.cs文件里面确实有清空session的操作,应该就是这个原因,才将session的值清空掉了。
感谢各位了。呵呵
--------------------------------------------------------
这个就是默认首页的问题。你自己机器的默认首页和正式服务器不一样。早先的几个评论就已经说过了。

 回复 引用 查看   
#92楼[楼主]2009-06-12 20:16 | kyne      
@heros
嗯,确实如此。

 回复 引用 查看   
#93楼2009-06-12 23:49 | 水边      
一个简单的问题,讨论了这么久
即使没有HttpWatcher
在目录的首页后台加断点,调试一下就可以看到了,
Img src=""
会导致在那个断点中断的

 回复 引用 查看   
#94楼2009-07-17 15:44 | 山 前      
我与楼主遭遇离奇一致.
解决方法也离奇一致.

是巧合还是?

 回复 引用 查看   
#95楼2009-07-17 16:01 | D.sky      
太诡异了
 回复 引用 查看   
#96楼[楼主]2009-07-18 01:39 | kyne      
引用山 前:
我与楼主遭遇离奇一致.
解决方法也离奇一致.

是巧合还是?

呵呵...其实也没什么...

 回复 引用   
#97楼2009-08-24 09:14 | 深圳飞侠[未注册用户]
确实在img标签的问题。如果是img src="" 就地造成session丢失。
 回复 引用 查看   
#98楼2010-09-17 11:58 | 一如既往      
深有体会啊,我搞了一天,调试IIS,连接池都不行,3楼的方法也试过,最后也是一个一个文件删除,确定在一个自定义控件里的img src="" ,当初想用脚本动态加载图片的,删掉后,一切OK,无语。。。
 回复 引用 查看   
#99楼2010-09-26 16:08 | 恒源      
没碰到过,分析一下有可能是这个逻辑造成的:
src="" 是默认请求根目录,如果默认页面是login.aspx,也许你在访问login.aspx页面里有清空Session的操作。
所以只要有链接指向根目录,就可能会清空Session。

 回复 引用 查看   
#100楼2011-03-01 10:31 | 北京一营长      
在做网页的时候, 如果img的src为空, 在google浏览器下会导致两次加载页面,相当与重新刷了一次页面