aspx页面Url传参在火狐浏览器下Page_Load执行两次的Bug

问题描述

机器环境: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端口,后来我火了就直接卸掉,现在几乎不用迅雷。

时间: 2024-09-17 04:56:21

aspx页面Url传参在火狐浏览器下Page_Load执行两次的Bug的相关文章

如何获取aspx页面url传过来的值

问题描述 Aspx页面<ItemTemplate><%#ShowOperat(Eval("gdbh"))%></ItemTemplate>自己写的一个方法Aspx.cspublicstringShowOperat(objectgdbh){stringurl="<ahref='../Wdgc/Wxgl.aspx?gdbh="+gdbh+"'><imagesrc='~/Image/view.gif'/>

|zyciis| ASP.NET中 我有A页面要传参到B页面,但这里不允许用URL传参 那有什么办法呢 谢谢

问题描述 1:Cokies这个不稳定2:Session这个占资源3:Appliction公共的这个这里不能用4:URL这个是最好的,但我这里不允许用这个不能在URL中出现参数大家有什么其他办法谢谢 解决方案 解决方案二:formpost解决方案三:formpost解决方案四:<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra

技术-关于JS调取服务和ajax获取url传参的问题

问题描述 关于JS调取服务和ajax获取url传参的问题 10.110.20.192:8080/BeijingSelling/services/hello?user=1244这是内网的服务地址 连接内网后在浏览器输入以上URL会在界面出现 Hello,1224. 就一个参数user,显示他的值:不输入则显示vistor 如何利用ajax或者其他技术获取user的值. 希望各位帮帮忙,确实查过不少资料,然后都是在本页面中获取URL的值,并不能解决我的问题. 解决方案 这个跨页需要服务器才能获取.然

js实现页面a向页面b传参的方法_javascript技巧

本文为大家分享了js实现页面a向页面b传参的具体方法,供大家参考,具体内容如下 方法一:使用HTML5本地化存储(localStorage) 组件(本地最大能存储5M数据)localStorage是本地永久存储数据,是cookie的优化 方法二:使用cookie将数据存放在客户的浏览器 (最大存储2M数据) 方法三:使用url传参 (将要传递的数据保存为一个存储变量,然后传给url)方法如下; a.html var app = {}; app.list = '123' app.test = '1

配置Tomcat解决URL传参引出的中文乱码问题

                         今天在写一个JSP页面时候,发现下面报错: <span style="font-size:18px;"> <a href="request.jsp?username=小七七">测试URL传参</a></span>     通常情况下,通过使用contentType和下面的就可以解决传参过程中的中文乱码问题,但是貌似URL传参还要设备别的东西. <% request

服务器-URL传参中文乱码,new string(&amp;amp;quot;iso-8859-1&amp;amp;quot;,&amp;amp;quot;utf-8&amp;amp;quot;)方法不行

问题描述 URL传参中文乱码,new string("iso-8859-1","utf-8")方法不行 小白接触后台不多,用myecplise开了一个服务器(tomcat),其中有url参数:http://xxx(ip)/downloadservlet?name=小儿鼻出血.mp4 ,然后出现乱码,服务器无法定位到该文件. 查网发现大部分对name进行转码,用name= new string("iso-8859-1","utf-8&qu

uploadify上传文件火狐浏览器下丢失session

问题描述 uploadify上传文件火狐浏览器下丢失session查了很多资料都不好用 解决方案 http://blog.csdn.net/longxia1987/article/details/8461427,把seesionid传过去试试.解决方案二:uploadify的session是独立的,就是说和你页面的session不是同一个.解决方案三:传JSESSIONID试试!解决方案四:只能把session 传过去.当参数传过去

Ajax请求过程中下载文件在FireFox(火狐)浏览器下的兼容问题_AJAX相关

需求很简单,点击一个文件链接下载该文件,同时向后台发送请求.需求很常见,用户点击下载后通常要进行下载量的统计,统计的话可以利用 script标签 或者 img标签(图片ping) 的跨域能力,将它们的 src 属性指向统计地址,但是这次用了 ajax 进行统计,遂出现了这个问题. demo 代码如下: <a id="a" href="http://c758482.r82.cf2.rackcdn.com/Sublime Text 2.0.2 x64 Setup.exe&q

解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法_javascript技巧

今天检查自己用JQuery+AJAX+PHP做的网站后台登录检测,发现登陆成功后执行页面跳转函数这段JavaScript(JS)代码特效在IE和谷歌浏览器Chrome下都可以很好地执行,兼容性还不错.结果到了火狐(FireFox)浏览器下setTimeout这个JS内置函数不执行了,无效了,也没报错!打开FireBUG指望它能检测出JS的错误,结果没用...Javascript(JS)脚本代码在各浏览器下的兼容是一个很头疼的问题,经过一番调试和搜索,终于解决了setTimeout这个JS代码在火