在调试一个ASP.NET网站时,意外地发现,在login.aspx里,会两次触发Page_Load事件,在网上搜了下,找到原因:
在这个页面里,用一个<img src="#" />标识,用来显示验证码图片,在JavaScript的PageLoad事件里,重新为它的src赋于新的URL,而ASP.NET在页面加载时,发现src指向#,由于当前用户尚未通过验证,要尝试访问这个资源,必须重定向到登录页面,也就是login.aspx本身,所以触发了两次Page_Load。
解决办法是修改img标记为:<img src="xxxx/verifycode.aspx" />,而xxx/verifycode.aspx是个不需要身份验证就可以访问的资源,这样就不会两次触发Page_Load了。