Asp.net 的 page_load 函数加载了两次... 因此影响了我的页面性能。有人知道它加载两次的原因吗?
不,我没有在任何地方调用 page load 函数...
Asp.net 的 page_load 函数加载了两次... 因此影响了我的页面性能。有人知道它加载两次的原因吗?
不,我没有在任何地方调用 page load 函数...
刚遇到这个问题,我想发表一个回答总结我找到的东西,以及我的实际问题。
1. img tags with src="" or Image tags with ImageUrl=""
2. Using AutoEventWireup="true" and adding a page handler
3. Having manually added the event handler (more common for C# than VB)
4. Handling both MyBase.Load and Me.Load
5. Variation on the missing img src, body { background-image: url(); }
6. Rewrite rule and missing favicon.ico
7. Page uses ScriptManager and "initializes" the loading panel by issuing a
postback from javascript.
Public Class C1
Inherits System.Web.UI.Page
Protected Overridable Sub PageLoad(ByVal sender As Object,
ByVal e As System.EventArgs) Handles Me.Load
End Sub
End Class
Public Class C2
Inherits C1
Protected Overrides Sub PageLoad(ByVal sender As Object,
ByVal e As System.EventArgs) Handles Me.Load
MyBase.PageLoad(sender, e)
End Sub
End Class
Public Class MyPage
Inherits C2
Protected Overrides Sub PageLoad(ByVal sender As Object,
ByVal e As System.EventArgs)
MyBase.PageLoad(sender, e)
End Sub
End Class
ASP.NET的工作方式导致页面会自动提交,从而调用页面加载函数,这并不是你调用页面加载函数两次的原因。当页面上有任何设置为回传的服务器控件(Server controls)被触发时,页面就会自动提交。
你需要进行一些检查,以区分初始页面加载和回传。
if(!IsPostBack)
{
//Code when initial loading
}
else
{
// code when post back
}
检查加载事件是否为基类和子类设置了处理程序
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load, Me.Load**
如果只是移除事件中的Me.Load,然后检查您的页面。 希望这可能有用并解决您的问题。
我曾在一个项目中发现以下字符串:
<link rel="Shortcut Icon" href="#" type="image/x-icon" />
有人像通常使用“a href”一样处理了它。但是浏览器实际上会在每次刷新时尝试获取站点图标,因此它会向href参数中的地址发送请求,即向同一页发送请求。
因此,请注意检查此问题。
<img src="#" />
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
您可以在此 IF 块内设置断点以验证您是否运行了两次 Page_Load。 如果您看到 Page_Load 运行两次,并且每次都不是 postback,请检查此页面的 OnInit() 方法。 请验证您未像下面这样连接 Load 处理程序。您将经常看到来自早期版本的 Visual Studio 的代码中出现此代码。
this.Load += new System.EventHandler(this.Page_Load);
如果您发现此处,请将其删除。这假定您在页面标记的顶部具有以下内容。 AutoEventWireup="true"
(说明:此段文字为提示,无需翻译)我通过将AutoEventWireUp属性设置为FALSE来解决了我的问题。当我从.NET 1.1迁移到.NET 4.0时,出现了这个问题。不知何故,在我从旧版本复制文件时,VS2012会将此属性重置为TRUE。
我曾遇到同样的问题并解决了。
我检查了我的Global.ascx文件和我的重写规则。
当页面被请求时,URL末尾没有“/”,根据我的SEO标准配置,会发生重定向从“x.com/x”到“x.com/x/”。
因此,只要您的内部链接在URL末尾都有“/”,一切就会正常工作,以避免多次加载。