问题描述
机器环境:Xpsp3+Vs2010+Firefox28.0问题描述:新建一个空的Website,加入一个a.aspx和b.aspxa.aspx页面代码<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="a.aspx.cs"Inherits="a"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>a</title></head><body><ahref="b.aspx?id=test">go</a></body></html>
b.aspx页面代码为默认未修改的状态,后台cs代码为privatestaticintcount=0;protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){Response.Write(count);++count;}}
在火狐浏览器下会出现Page_Load执行两次的情况,输出的结果都是1,3,5等奇数,而在IE7和Chrome下则不会出现这种情况,输出结果每次递增1,不知道大家有没有遇见过这种情况。PS:在网上搜索找到的解决方案都是针对a、img等标签的src或href有空值的情况,但我这两个页面里面都没有。如果直接在火狐浏览器里输入url传参或者a标签里的href不带参数都不会出现此情况。
解决方案
本帖最后由 hanxuetaotao2 于 2014-04-25 16:34:44 编辑
解决方案二:
这个问题我前段时间也遇到了我的代码是这样的页面前端<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default2.aspx.cs"Inherits="Default2"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title></head><body><div><aonclick="returnconfirm('您确定要删除么?')"href="Default2.aspx?action=delete">删除</a><aonclick="returnconfirm('您确定要删除么?')"href="http://www.baidu.com?sdsd=asdsad">删除</a></div></body></html>
页面后台usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;publicpartialclassDefault2:System.Web.UI.Page{publicstringstrID=string.Empty;protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){strID="123123";if(Request.QueryString["action"]!=null){stringstrTest=Request.QueryString["action"].ToString();Response.Write("<script>alert('删除了!')</script>");Response.End();}}}}
点击删除之后在取消也是走后台page_load的bug出现在firefox28.0win2003vs2010中我用win7测试发现firefox28.0也是这样的目测是火狐浏览器版本的问题但是我还没有测试
解决方案三:
我当时给别人说这个问题他们都觉得我是个菜鸟shit!尽管我真是个菜鸟。但是这点鉴定能力还是有的!
解决方案四:
不可能,确实不可能,起码我从来没有出现过,也没听说过这样的事,为此我还特意写了个程序并用你的代码测试,告诉你一个事实,完全正确,永远是+1。目测,是不是你机子的问题?
解决方案五:
想想也不可能,如果真存在这样的BUG,它早就被淘汰了,建议你换台机子试试吧。
解决方案六:
解决方案七:
我想对楼上的说别那么自大上来就说不可能存在即合理我们的问题不会不经过多次测试发出来的好吧
解决方案八:
你给A.aspx中的A元素加一个target属性试试呢。
解决方案九:
或者在B.aspx页面中声明一下OutputCache呢?
解决方案十:
引用1楼a5114612的回复:
这个问题我前段时间也遇到了我的代码是这样的页面前端<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default2.aspx.cs"Inherits="Default2"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title></head><body><div><aonclick="returnconfirm('您确定要删除么?')"href="Default2.aspx?action=delete">删除</a><aonclick="returnconfirm('您确定要删除么?')"href="http://www.baidu.com?sdsd=asdsad">删除</a></div></body></html>页面后台usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;publicpartialclassDefault2:System.Web.UI.Page{publicstringstrID=string.Empty;protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){strID="123123";if(Request.QueryString["action"]!=null){stringstrTest=Request.QueryString["action"].ToString();Response.Write("<script>alert('删除了!')</script>");Response.End();}}}}
点击删除之后在取消也是走后台page_load的bug出现在firefox28.0win2003vs2010中我用win7测试发现firefox28.0也是这样的目测是火狐浏览器版本的问题但是我还没有测试
我出现的这个问题有这么几个条件1.普通html不会出现这种情况,用sap.net2.必须是自身页面调用自身页面并且带参数例如:我当前页面是Default.aspx页面,那么我的链接这样写<aonclick="returnconfirm('您确定要删除么?')"href="Default2.aspx?action=delete">删除</a>
3.火狐浏览器28.0版本满足以上条件,当点击“删除”超链接的时候,会弹出提示框。点击取消,也会进入后台代码(别不信,自己设置断点试试)。当点击“确定”时,会进入page_load两次。
解决方案十一:
引用9楼a5114612的回复:
Quote: 引用1楼a5114612的回复:
这个问题我前段时间也遇到了我的代码是这样的页面前端<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default2.aspx.cs"Inherits="Default2"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title></head><body><div><aonclick="returnconfirm('您确定要删除么?')"href="Default2.aspx?action=delete">删除</a><aonclick="returnconfirm('您确定要删除么?')"href="http://www.baidu.com?sdsd=asdsad">删除</a></div></body></html>页面后台usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;publicpartialclassDefault2:System.Web.UI.Page{publicstringstrID=string.Empty;protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){strID="123123";if(Request.QueryString["action"]!=null){stringstrTest=Request.QueryString["action"].ToString();Response.Write("<script>alert('删除了!')</script>");Response.End();}}}}
点击删除之后在取消也是走后台page_load的bug出现在firefox28.0win2003vs2010中我用win7测试发现firefox28.0也是这样的目测是火狐浏览器版本的问题但是我还没有测试
我出现的这个问题有这么几个条件1.普通html不会出现这种情况,用sap.net2.必须是自身页面调用自身页面并且带参数例如:我当前页面是Default.aspx页面,那么我的链接这样写<aonclick="returnconfirm('您确定要删除么?')"href="Default2.aspx?action=delete">删除</a>
3.火狐浏览器28.0版本满足以上条件,当点击“删除”超链接的时候,会弹出提示框。点击取消,也会进入后台代码(别不信,自己设置断点试试)。当点击“确定”时,会进入page_load两次。
上面有点儿笔误2.必须是自身页面调用自身页面并且带参数例如:我当前页面是Default2.aspx页面,那么我的链接这样写<aonclick="returnconfirm('您确定要删除么?')"href="Default2.aspx?action=delete">删除</a>
解决方案十二:
刚才我又用火狐27.0的版本测试过了还是不行我把我机器配置报出来吧
解决方案十三:
估计是ado.net与火狐之间的问题。其实也别那么激动使用ado.net被说说是很正常的
解决方案十四:
刚才在stackoverflow上也找到个firefoxonly的bug,也是page_load两次执行另外a标签的target都试过了,还是会重复执行,晚上装台虚拟机,并装个无任何插件的firefox再测试下
解决方案十五:
引用12楼cears的回复:
估计是ado.net与火狐之间的问题。其实也别那么激动使用ado.net被说说是很正常的
。net真的这么不堪么微软在做改变了而且我相信以后会发展的更好
解决方案:
我豁出去了26.0我也测试过了
解决方案:
引用14楼a5114612的回复:
Quote: 引用12楼cears的回复:
估计是ado.net与火狐之间的问题。其实也别那么激动使用ado.net被说说是很正常的。net真的这么不堪么微软在做改变了而且我相信以后会发展的更好
其实不管.net的事情。。。是因为我们都在用asp.net的mvc开发网页模式了。ado.net控件流让人不堪回想
解决方案:
引用13楼hanxuetaotao2的回复:
刚才在stackoverflow上也找到个firefoxonly的bug,也是page_load两次执行另外a标签的target都试过了,还是会重复执行,晚上装台虚拟机,并装个无任何插件的firefox再测试下
赶紧测试我也想要个结果!!!
解决方案:
引用13楼hanxuetaotao2的回复:
刚才在stackoverflow上也找到个firefoxonly的bug,也是page_load两次执行另外a标签的target都试过了,还是会重复执行,晚上装台虚拟机,并装个无任何插件的firefox再测试下
话说英文网站你能看懂啊大神!!膜拜!!
解决方案:
坐等大神
解决方案:
引用16楼cears的回复:
Quote: 引用14楼a5114612的回复:
Quote: 引用12楼cears的回复:
估计是ado.net与火狐之间的问题。其实也别那么激动使用ado.net被说说是很正常的。net真的这么不堪么微软在做改变了而且我相信以后会发展的更好
其实不管.net的事情。。。是因为我们都在用asp.net的mvc开发网页模式了。ado.net控件流让人不堪回想
建议先搞清楚ado.net和asp.net的区别。
解决方案:
没有firfox无法测试(我只有ie、chrome、opera)。你应该在一个独立的http调试器跟踪下(例如Fiddler跟踪下),看看http消息。贴出来。
解决方案:
引用21楼sp1234的回复:
没有firfox无法测试(我只有ie、chrome、opera)。你应该在一个独立的http调试器跟踪下(例如Fiddler跟踪下),看看http消息。贴出来。
话说这个没用过我查查资料试试
解决方案:
Referhere:
解决方案:
我用windows8.1+火狐28.0版本测试完全没有问题。这个不关.net的事情。
解决方案:
引用16楼cears的回复:
Quote: 引用14楼a5114612的回复:
Quote: 引用12楼cears的回复:
估计是ado.net与火狐之间的问题。其实也别那么激动使用ado.net被说说是很正常的。net真的这么不堪么微软在做改变了而且我相信以后会发展的更好
其实不管.net的事情。。。是因为我们都在用asp.net的mvc开发网页模式了。ado.net控件流让人不堪回想
asp.netwebformmvc和ado.net没有任何关联。MVC下一样可以用ado.net处理数据交互。
解决方案:
顶#23估计代码问题估计是服务器控件惹的祸之前有个前辈和我说过服务器控件经常会莫名其妙的回发
解决方案:
不排除系统问题但是个人觉得系统问题的关系不大。。。因为楼上有提到说换了环境也是一样的效果
解决方案:
引用23楼insus的回复:
Referhere:
不知大神是否可以给我远程看一下我保证和代码没有任何关系!!!!
解决方案:
引用26楼ShenShiampMoYi的回复:
顶#23估计代码问题估计是服务器控件惹的祸之前有个前辈和我说过服务器控件经常会莫名其妙的回发
没有用服务器控件啊就是htmla标签
解决方案:
没做测试,不过如果真有这问题,那也是火狐浏览器导致的这种问题就类似于火狐的F5保留页面输入框参数的功能么。。。这坑爹的功能导致经常要写一部分js代码去初始化页面参数,以防止不正确的效果Ctrl+F5强刷,F5这个真心不知道叫啥刷。。。。
解决方案:
不相信火狐这个鸟功能的,可以直接就在下面输入框里随便输点值,然后F5一下,输入的东西都还在引用30楼starfd的回复:
没做测试,不过如果真有这问题,那也是火狐浏览器导致的这种问题就类似于火狐的F5保留页面输入框参数的功能么。。。这坑爹的功能导致经常要写一部分js代码去初始化页面参数,以防止不正确的效果Ctrl+F5强刷,F5这个真心不知道叫啥刷。。。。
解决方案:
饿..我来认错的顺带说下在没使用服务器控件的情况下没遇到过这种问题
解决方案:
服务器控件出错的可能是因为服务器控件要在页面写入Js,这个有个喜闻乐见的地方就是,火狐不支持很多js,比如document.GetElementById("Id").innerTextIE中可用,火狐中就完蛋
解决方案:
引用2楼a5114612的回复:
我当时给别人说这个问题他们都觉得我是个菜鸟shit!尽管我真是个菜鸟。但是这点鉴定能力还是有的!
我有理由怀疑你和楼主是一个人。还有删除数据用get提交么?不是不行,但也算是奇葩了。我已经在win764位操作系统firefox28版本测试过,没有任何问题。
解决方案:
引用32楼ShenShiampMoYi的回复:
饿..我来认错的顺带说下在没使用服务器控件的情况下没遇到过这种问题
什么意思?相信使用服务器控件你也没有遇到过这种问题!
解决方案:
引用34楼pengqian098的回复:
Quote: 引用2楼a5114612的回复:
我当时给别人说这个问题他们都觉得我是个菜鸟shit!尽管我真是个菜鸟。但是这点鉴定能力还是有的!我有理由怀疑你和楼主是一个人。还有删除数据用get提交么?不是不行,但也算是奇葩了。我已经在win764位操作系统firefox28版本测试过,没有任何问题。
不用怀疑!我没那么无聊!
解决方案:
该回复于2014-04-27 14:50:41被版主删除
解决方案:
引用35楼sp1234的回复:
Quote: 引用32楼ShenShiampMoYi的回复:
饿..我来认错的顺带说下在没使用服务器控件的情况下没遇到过这种问题什么意思?相信使用服务器控件你也没有遇到过这种问题!
我的意思是1、曾经有在使用服务器控件的时候遇到过,后台的page_load经常会莫名其妙的重复执行2、后来使用HTML控件后就没遇到过了...我想说之前没瞧清楚题目。。认个错。。
解决方案:
引用6楼a5114612的回复:
我想对楼上的说别那么自大上来就说不可能存在即合理我们的问题不会不经过多次测试发出来的好吧
我说的不可能是建立在我这没问题的情况下发出的,而且我用的就是你的代码两个页面,存在即是合理,那我问你,你试过多少机子测试过?就你一台?那你不能再去找机子测试一下是不是你机子本身的插件或是其它什么东西导致了这种的情况的发生?别乱扣给我一个自大的标签,我回答你的问题是想帮助你,而不是给你扣帽子的,不然我也不会用你的代码来进行测试。
解决方案:
其实不管.net的事情。。。是因为我们都在用asp.net的mvc开发网页模式了。ado.net控件流让人不堪回想
asp.netwebformmvc和ado.net没有任何关联。MVC下一样可以用ado.net处理数据交互。
使用mvc主流是原生html代码ado.net最适合的各人感觉框架还是三层好
解决方案:
我感觉不是浏览器的原因啦。
解决方案:
引用41楼zhangshuanglili的回复:
我感觉不是浏览器的原因啦。
就目前来看还是不确定!
解决方案:
引用34楼pengqian098的回复:
Quote: 引用2楼a5114612的回复:
我当时给别人说这个问题他们都觉得我是个菜鸟shit!尽管我真是个菜鸟。但是这点鉴定能力还是有的!我有理由怀疑你和楼主是一个人。还有删除数据用get提交么?不是不行,但也算是奇葩了。我已经在win764位操作系统firefox28版本测试过,没有任何问题。
是个奇葩又怎样问题在这扯那些有的没有管用么?
解决方案:
此贴要沉的节奏楼主死哪了?
解决方案:
引用23楼insus的回复:
Referhere:
大哥,不是刷新,是点击页面的链接,而且是带参数的链接才会出现这种情况;我也遇到了这个问题,我重述一遍重现这个问题的条件,请各位测试的时候看仔细,注意条件,一个条件不具备都不会重现这个问题,条件如下:1、浏览器要用Firefox(或其它非IE内核浏览器也可能会有此情况出现,我未测试,只测试了firefox),IE不会出现这个问题;2、点击页面的链接,不是刷新,也不是地址栏回车3、firefox也不是总会出现,如果未出现,重启firefox或重新编译项目,多试几次,也许还不出现,希望你明白,这也不能证明这个问题不存在
解决方案:
附上我测试时,fiddler监测的截图http://a2.qpic.cn/psb?/V11APypM3esGjs/*8TjY28WnBU7.GA6Ch9oBCOHEEJ7cLd6OMsTTOMBL14!/m/dBbPJeNlCQAAnull&bo=qQPsAQAAAAAFB2M!&rf=photolist&t=5+++++++++++++++++++++++++图片传不上来,大家点击链接直接看吧++++++++++++++++第一次为页面首次加载,第二次为刷新第三次为点击不带参数的链接第四次为点击带参数的链接
解决方案:
补充描述,此问题无论AutoEventWireup是true或false,都会出现
解决方案:
网站程序是无状态的,每次请求都是新的即count每次都从0开始,想实现自增长可以用viewstate(隐藏字段)在浏览器端缓存一下每次增加的数据
解决方案:
找到问题所在——迅雷插件惹的祸,卸掉firefox的迅雷插件,问题解决。至少在我本机是这样!补充:碰到此类问题不仅仅是asp.net,其它如jsp等等都有可能遇到
解决方案:
呵呵,迅雷总是会对浏览器有各种干扰,很早以前迅雷默认占用的就是80端口,后来我火了就直接卸掉,现在几乎不用迅雷。