asp.net 页面执行二次的解决办法

 早上在写一个.NET的计数器程序,发现每次刷新页面,计数器就加2,屏蔽一切可能导致这种情况的代码,问题依旧,苦闷了一个上午!后来在好友的协助下发现Page_Load这个方法执行了两次,上网搜索相关的问题,发现遇到该问题的还真不少!

 诸如加入AutoEventWireup="false"等方法简直是胡扯,因为一旦创建一个aspx页面,这行代码便会自动加入。后来找出一篇<img src="">会导致Page_load执行两遍的文章,恍然大悟,马上将iis的默认始动文档,去掉,然后再调试,一切正常!

 本着钻研精神,然后再慢慢找出导致执行两次的原因,仔细检查了aspx文件,并无发现<img src="">的代码,当时也觉得奇怪,难道还有其他可能性,诸如<script src="">等?一个个来调试,仍然没有半点头绪!后来不经意发现当前页面有一个图片不能正常显示(该图片的地址是从数据库读出,右键属性,发现其地址为:http://locahost,害了我头痛了一个上午的祸首终于给我揪出来了。原来是 img src对应的数值是空导致的!

 致于img标签为空执行page_load的原因是:img src=""   > img src="/"  > img src="/index.aspx",因为重新请求了index.aspx,所以page_load又执行了一次。不过如果IIS没有设置默认文档,该问题是不会出现的,所以一些人提及到本地调试没有问题,一旦上传至服务器就出问题,就是因为这个原因!

防止page_load多次执行的办法最好是检查客户端是否有空src的图片,然后服务器端亦要做相关的安全检查,如果某个字段打算作为img src的值,一定要检查该值是否为空,不然....不幸又将降临你身上了。
 
原文:http://memoryblog.com.cn/blog/memory/archives/2006/6512.html

时间: 2024-11-05 16:05:00

asp.net 页面执行二次的解决办法的相关文章

ASP.NET页面传值加号变空格解决办法

只需要把欲传值进行编码 string EncodeId = Server.UrlEncode(id); 加号就变成了 % 2 B  (中间无空格) 然后再传出去. Request.QueryString默认会自动解码的,UrlDecode,所以直接获取即可.(服务器不需要解码,解码反而会出错) 这样,就不会再是空格了.

[.net] 关于CS0016: Could not write to output file ‘c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files… ‘Access is denied.’ 的解决办法

[.net] 关于CS0016: Could not write to output file ‘c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files… ‘Access is denied.’ 的解决办法 1.添加用户"Network Service” 和 “IIS_IUSERS” 读下面目录的读写权限 a) C:\Windows\Temp b) C:\Windows\Microsoft.NET\Framewo

jquery的on绑定点击事件执行两次的解决办法

js(jquery)的on绑定点击事件执行两次的解决办法—不是事件绑定而是事件冒泡 遇到的问题:jquery中用.on()给页面中新加的元素添加点击事件时,点击事件源,绑定的事件执行两次,这里的alert会执行两次,相应地数组删除也执行两次,具体代码如下(其中.tabDel是页面加载之后新生成的元素,故不能用普通的$(‘.tabDel).click(function(){})的方法添加点击事件): 上网找的解决方法大概有一下两种:1.在用 on 绑定 click 事件之前,对该事件解绑,也就是

Java Runtime.getRuntime().exec 执行带空格命令解决办法

String command = OpenOffice_HOME + "program\\soffice -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\" -nofirststartwizard "; command = "cmd /c start "+command.replaceAll(" ","\" \""); P

Asp.Net长文件名下载的问题和解决办法

在Asp.Net中写了一个附件上传和下载的程序,附件上传到数据库中,然后将附件的GUID保存起来,我们可以根据GUID来找到数据库中的附件,一般附件下载的代码是: <!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->

Vue用router.push(传参)跳转页面,参数改变,跳转页面数据不刷新的解决办法

vue-router同路由$router.push不跳转一个简单解决方案 vue-router跳转一般是这么写: goPage(ParentDeptCode2,DeptCode2,hosName,hosId){ this.$router.push({ path:'/ChoiceTime', query:{ DeptCode:ParentDeptCode2, DeptCode2:DeptCode2, hosName:hosName, hosId:hosId } })} 但是当遇到,需要跳转同页面不

微信 长按 无法 识别二维码 解决办法

也不知道是微信故意为之还是BUG, 一个有二维码图片的DIV 设置了 style="position:absolute; left:0x; top:200px;" 在微信的内置浏览器下怎么长按也不出字 但是设置 style="position:absolute; left:0x; top:0px;"  却有效, 无论我如何改变嵌入这个二维码图片的DIV的结构,无论在结构的哪一层设置 style 都不行. 经过无数测试当left 或top 值较小时有效. 那么解决办法

重写dispatchKeyEvent方法 按返回键back 执行两次的解决办法

重写dispatchKeyEvent方法 按返回键back 执行两次的解决方法 @Override   public boolean dispatchKeyEvent(KeyEvent event) {           if(event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() != KeyEvent.ACTION_UP) {//不响应按键抬起时的动作                //TODO 代码    

eclipse中jsp页面Invalid location of tag 解决办法分析小结

在jsp页面使用标签过程中有时候不注意规则的话,eclipse会提示一些错误,下面针对这些错误提出相应的解决办法: <form></form>标签 1. Invalid location of tag (form) form 应该写到table外面去,并且form标签里面也不能套form标签.<style></style>2. Invalid location of tag (style)  style应该写在head里面.<script><