ASP.NET Page_Load执行两次

早上在写一个.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的值,一定要检查该值是否为空,不然....不幸又将降临你身上了。

以上是网上搜索而来,以下才是我的真正情况:

首先想到的是代码中是不是存在跳转到自身的页面的代码,比如:当前页面是a.aspx, 但在代码中存在Response.Redirect("a.aspx")语句,或者在客户端存在window.location.href = ‘a.aspx‘这种语句,从而造成页面重新载入,但是通过检查代码没有发现。在网络上搜索了一下,发现一篇文章中说可能是图片控件<img/>中的图片地址引(src=...)用了无效地址造成了页面的重新载入。这个给我们提供了一个思路,也就是html或者服务器端控件的属性被赋非法值,那么可能造成也页面的重新早入,通过一点点的去掉html代码,然后进行断点跟踪,发现在table中间的background属性被我赋了一个颜色值,即"#ECECEC"这样的值。而background的合法值应该是一个地址,我的原意是给table设置一个背景颜色,所以这里的属性是bgcolor。就是由于这个原因造成了页面的重新载入,修改后问题解决。

罪魁祸首的代码如下:

<li style="background:url(‘‘) no-repeat 0 7px;">
<span class="numberfont">当前页<%= this.PageIndex %>/共<%= TotalPage %>页(<%= TotalCount %>条记录)</span>

就是这个 background:url(‘‘) 害苦了我。

此记,防止下次再犯。

ASP.NET Page_Load执行两次,布布扣,bubuko.com

时间: 2024-10-09 22:02:32

ASP.NET Page_Load执行两次的相关文章

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

早上在写一个.NET的计数器程序,发现每次刷新页面,计数器就加2,屏蔽一切可能导致这种情况的代码,问题依旧,苦闷了一个上午!后来在好友的协助下发现Page_Load这个方法执行了两次,上网搜索相关的问题,发现遇到该问题的还真不少! 诸如加入AutoEventWireup="false"等方法简直是胡扯,因为一旦创建一个aspx页面,这行代码便会自动加入.后来找出一篇<img src="">会导致Page_load执行两遍的文章,恍然大悟,马上将iis的默

[原] Page_Load执行了两次,为什么?如何解决!

今儿个发现Page_Load执行了两次,想不通.后来,经找资料,总算查出原因.1.在aspx页面上写了 AutoEventWireup="true" ,这样Page_Load会自动执行一次.2.生成的后台(.cs)文件中有 #region Web Form Designer generated code        override protected void OnInit(EventArgs e)        { this.Load += new EventHandler(Pa

ASP.NET 中执行 URL 重写

具体实现步骤(其中的一种实现方法): 一.下载相关的DLL(ActionlessForm.dll和UrlRewriter.dll) http://download.csdn.net/detail/yingwanghbx/4510059 二.在项目中引用那两个DLL文件 右击项目,点击Add Reference,选择Browse,然后选择相应的DLL,点击OK即可. 三.添加browser文件 1.右击项目,点击Add-New Item,选择Browser File,取个有意义的名字.在生成的*.

为什么struts2 ajax 方法执行两次

struts2中使用json插件执行ajax处理时,如果方法名是get方法的时候,方法会莫名其妙的执行两次. 原因: struts2 中JSON的原理是在ACTION中的get方法都会序列化,所以前面是get的方法只要没指定不序列化,都会执行解决方法 Action中的业务方法前别加get 或者 set(属性的get set 除外) 用@JSON(serialize=false)指定方法不序列化如import com.googlecode.jsonplugin.annotations.JSON;@

Spring 被初始化两次(Spring-Task定时任务执行两次)分析和解决方法

初始问题: 采用Spring-Task配置定时任务,任务执行两次,该问题在Eclipse调试环境上不出现 分析问题: 第一步:开始怀疑业务逻辑,通过排查和定位排除业务原因(通过日志可以查看多次执行) 1 @Component("collection.car") 2 public class CollectionCarsJob { 3 private static Logger logger = LoggerFactory.getLogger(CollectionCarsJob.clas

spring 定时器执行两次

spring错误笔记 spring定时器执行两次因为导入了两次 关于配置文件如下 <bean id="timeTaskService" class="xx.xxx.xxx.xxx.service.impl.na.TimeTaskService"/> <task:scheduled-tasks scheduler="myScheduler"><!--30秒执行一次 --> <task:scheduled r

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

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

ajax跨域往php程序post数据时,php程序总是执行两次的解决方法

php程序是部署在IIS7上面,ajax提交数据时,遇到了两个问题,一个就是跨域,一个php程序总会被执行两次. 第一个问题的解决方法,是百度出来的,添加下面几行代码就可以了: header('Access-Control-Allow-Origin:*'); header("Access-Control-Allow-Headers: x-requested-with,content-type"); header('Access-Control-Allow-Methods: OPTION

如何按顺序执行两个动画

问题: 假如:需要按顺序执行两个动画A.B,B动画需要在A动画执行完毕后再执行.两个动画的执行不能有时间间隔,即A动画执行完毕立即执行B动画. 实现方案: 事先已经导入了Facebook的pop框架,并#import <POP.h> 1.设置A动画的动画时间,执行A动画 2.创建NSTimer定时器timer,设置时间间隔为A动画的动画时间.并把timer添加到主运行循环. 3.把B动画添加到timer调用的的selector方法中. - (void)touchesBegan:(NSSet *