Je ne suis pas sûr à 100% que ce qui suit fonctionne dans tous les cas. Jusqu'à présent, cependant. Notez que Context.Session.Item ("CURRENT_WEB_USER") est où je stocke l'utilisateur actuel, et n'est donc pas facilement disponible dans le cadre des variables de session asp.net.
Le code ci-dessous est en remplacement de Global.aspx qui permet à la fois la synchronisation de la pleine page et la synchronisation du code du développeur.
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Sub Application_AcquireRequestState(sender As Object, e As System.EventArgs)
If HttpContext.Current Is Nothing Then Return
If HttpContext.Current.Session Is Nothing Then Return
If TypeOf HttpContext.Current.CurrentHandler Is Page Then
If Not Context.Items.Contains("Request_Start_Time") Then
Dim MyPage As Page = HttpContext.Current.CurrentHandler
AddHandler MyPage.Init, AddressOf PageInitEncountered
AddHandler MyPage.Unload, AddressOf PageUnloadEncountered
Context.Items.Add("Request_Start_Time", DateTime.Now)
Dim User As String = Context.Session.Item("CURRENT_WEB_USER")
Context.Items.Add("Request_User", User)
End If
End If
End Sub
Sub Application_ReleaseRequestState(sender As Object, e As System.EventArgs)
If HttpContext.Current Is Nothing Then Return
If TypeOf Context.CurrentHandler Is Page Then
Dim Page As Page = Context.CurrentHandler
Dim StartDate As Date = Context.Items("Request_Start_Time") : If StartDate = Nothing Then Return
Dim EndDate As Date = Now
Dim StartProc As Date = Context.Items("Page_Init")
Dim EndProc As Date = Context.Items("Page_Unload")
Dim User As String = Context.Items("Request_User")
LogEntry(StartDate, EndDate, StartProc, EndProc, User, Context.Request.Url.ToString)
End If
End Sub
Public Sub PageInitEncountered(sender As Object, e As System.EventArgs)
Context.Items.Add("Page_Init", DateTime.Now)
End Sub
Public Sub PageUnloadEncountered(sender As Object, e As System.EventArgs)
Context.Items.Add("Page_Unload", DateTime.Now)
End Sub
Public Sub LogEntry(StartDate As Date, EndDate As Date, StartProc As Date, EndProc As Date, User As String, PageURL As String)
System.Diagnostics.Debug.WriteLine(" (" & LogEntry.RequestMs & " - " & LogEntry.DurationMs & ") (" & User & ") " & PageURL)
End Sub
merci. mais l'élément de menu 'performance au niveau de la méthode du profil' provoque une boîte de message 'La cible du projet actif n'est pas un fichier exécutable. Choisissez un projet qui crée un programme exécutable ou définissez un programme externe dans les paramètres du projet. (le projet actif est mon application web). Donc, je ne sais pas comment le faire fonctionner. –
Eh bien, en fonction de l'endroit où vous essayez d'exécuter le projet (IIS ou Visual Studio Web), vous pouvez sélectionner une autre option pour l'emplacement du lien du profileur dans l'application en cours d'exécution. J'ai réussi à déboguer les sites VS et IIS. Regardez les vidéos de démonstration car elles vous aideront à le faire. – hacker