La fonction Asp.net page_load se charge deux fois .. elle affecte donc les performances de ma page ..__ Est-ce que quelqu'un sait la raison pour laquelle il se charge deux fois?.
Non, je n'appelle la fonction de chargement de page nulle part ...
Je viens de rencontrer ce problème et j'ai pensé poster une réponse résumant ce que j'ai trouvé, ainsi que mon problème.
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
et enfin mon problème ....
Ma page a hérité d'une classe qui incluait un gestionnaire de chargement de page, qui héritait d'une classe avec un gestionnaire de chargement de page.
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
J'ai testé cela, et si vous mettez une poignée sur la méthode dans MyPage, elle sera touchée 3 fois ...
Ce n'est pas vous qui appelez la fonction de chargement de page deux fois, c'est la façon dont fonctionne ASP.NET. La page se poste sur elle-même, appelant ainsi la fonction page_load, lorsqu'un ou plusieurs contrôles serveur de la page sont déclenchés (ceux définis comme postback).
Ce que vous devez faire est de mettre quelques contrôles pour différencier un chargement initial de page d'un post back
if(!IsPostBack)
{
//Code when initial loading
}
else
{
// code when post back
}
S'il vous plaît trouver la solution ici ........
Vérifiez si les événements Load ont des gestionnaires pour la classe de base et la classe enfant Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Gère MyBase.Load, Me.Load **
S'il s'agit simplement de supprimer le Me.Load de l'événement, vérifiez maintenant votre page. J'espère que cela peut être utile et résoudre votre problème.
Une fois, j'ai trouvé la chaîne suivante dans un projet:
<link rel="Shortcut Icon" href="#" type="image/x-icon" />
Quelqu'un vient de le faire comme il le fait habituellement avec "a href" . Mais le navigateur essaie en fait d'obtenir l'icône du site à chaque actualisation, de sorte qu'il envoie une requête à l'adresse du paramètre href, c'est-à-dire à la même page.
Alors, vérifiez ceci aussi.
Pour moi, c'était une balise d'image vide.
<img src="#" />
N'oubliez pas de vérifier la valeur IsPostBack comme indiqué ci-dessous:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
Vous pouvez placer des points d'arrêt à l'intérieur de ce bloc IF pour vérifier que vous exécutez Page_Load deux fois . Si l'exécution de Page_Load est exécutée deux fois et qu'il ne s'agit pas d'une publication, vérifiez la méthode OnInit () pour cette page ..__ ne connectez pas le dispositif de prise de charge comme ci-dessous. Vous verrez souvent ce code issu du code ayant été migré à partir de versions antérieures de Visual Studio.
this.Load += new System.EventHandler(this.Page_Load);
Supprimez ceci si vous le trouvez. Cela suppose que les éléments suivants figurent en haut du balisage de la page . AutoEventWireup = "true"
J'ai résolu mon problème en définissant l'attribut AutoEventWireUp sur FALSE. J'ai eu ce problème lors de la migration de .net 1.1 vers .net 4.0. D'une manière ou d'une autre, VS2012 a réinitialisé cet attribut sur TRUE lorsque je copie le fichier depuis l'ancienne version.
J'ai eu le même problème et résolu.
J'ai vérifié mes règles Global.ascx et Mes règles de réécriture.
Lorsque la page demandée, l'URL n'avait pas "/" à la fin de l'URL et une redirection s'est produite de "x.com/x" à "x.com/x/" selon ma configuration pour les normes de référencement.
Donc, tout fonctionne bien et vos liens internes doivent avoir "/" à la fin des URL pour éviter les charges multiples.
L'objet Page appelle la méthode OnLoad sur l'objet Page, puis procède de manière récursive pour chaque contrôle enfant jusqu'à ce que la page et tous les contrôles soient chargés. L'événement Load des contrôles individuels se produit après l'événement Load de la page.
Utilisez la méthode d'événement OnLoad pour définir les propriétés dans les contrôles et pour établir des connexions de base de données.
Reffer MSDN: entrez la description du lien ici
S'il vous plaît essayez d'apporter les modifications mentionnées dans ce lien. http://social.msdn.Microsoft.com/Forums/en/vbgeneral/thread/ccc75925-3460-497c-8471-fcebecd8d061
BTW je googlé Page_Load Being called twice
Pour moi, ce problème est apparu soudainement après la mise à jour Windows d'octobre 2017. J'ai remarqué que pour les pages accessibles aux utilisateurs anonymes via un élément Location de web.config, il est maintenant nécessaire d'autoriser également l'accès à tous les éléments référencés par cette page, tels que des images, des feuilles de style, etc. L'exemple ci-dessous accorde l'accès anonyme à la page de connexion et le répertoire 'images' (dossier aka):
<location path="login.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
<location path="images">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
Mise à jour: j'ai trouvé une deuxième cause d'appel à Page_Load deux fois. Dans l'ancien code hérité, les fichiers .aspx.designer.cs de certaines pages contenaient des incohérences qui n'avaient apparemment posé aucun problème jusqu'à présent. Au lieu de tenter une réparation, j'ai créé de nouvelles pages, ce qui a éliminé l'événement de double chargement.
J'ai eu le même problème . C'était à cause d'un TreeNode avec ImageUrl = "".
Pour moi, cela a été résolu en supprimant
Handles Me.Load
et en changeant la méthode comme
Protected Overrides OnLoad(...)
J'ai remplacé le Response.Redirect
par le Server.Transfer
car il a été suggéré que ce soit la nouvelle façon de faire les choses. Depuis lors, les pages se chargent deux fois et le bouton Précédent de Chrome retourne à la page précédente et revient immédiatement à la page actuelle. J'ai remplacé le Server.Transfer
par le Response.Redirect
et tout était revenu à la normale ..__ J'ai également mis cette réponse sur les chargements de page deux fois à cause du code js .