IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ ASP.NET/VB.NET

FAQ ASP.NET/VB.NETConsultez toutes les FAQ

Nombre d'auteurs : 38, nombre de questions : 369, dernière mise à jour : 16 juin 2021 

 
OuvrirSommaireWebFormsApplicationGlobal.asax

La classe Global est la classe capable de gérer des évènements du niveau application. Elle se trouve dans un fichier appellé Global.asax (plus précisément Global.asax.cs ou Global.asax.vb suivant le langage de développement). Le Global.asax est optionnel mais il peut faciliter le développement ainsi que la maintenance d'applications. On l'utilisera, par exemple , pour écrire une entrée dans un fichier de logs lorsqu'une exception est lancée et n'est pas gérée. Il existe également d'autres utilisations possibles comme le calcul du temps nécessaire à une requête, un compteur de hits, ... Concrètement, la classe Global est une classe dont il n'existe qu'une instance (ce que l'on appelle « singleton » dans le jargon).

Créé le 23 mai 2005  par Didier Danse

Lien : Utilisation du Global.asax

Ce fichier se trouve obligatoirement dans le répertoire racine de l'application ASP.NET. Il y en a un et un seul par application.

Créé le 23 mai 2005  par Didier Danse

Lien : Utilisation du Global.asax

 
Sélectionnez
Namespace Developpez

    Public Class Global
        Inherits System.Web.HttpApplication
        Public Shared nbHits As Integer

        Protected Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
            nbHits = 0
        End Sub

        Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
            System.Math.Min(System.Threading.Interlocked.Increment(nbHits), nbHits - 1)
        End Sub
    End Class
End Namespace
Créé le 19 juin 2005  par Didier Danse

Le Global.asax nous est d'une grande utilité dans ce cas.

 
Sélectionnez
Namespace Developpez

    Public Class Global
        Inherits System.Web.HttpApplication
        Public Shared nbUsers As Integer

        Protected Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
            nbUsers = 0
        End Sub

        Protected Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
            System.Math.Min(System.Threading.Interlocked.Increment(nbUsers), nbUsers - 1)
        End Sub

        Protected Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
            System.Math.Max(System.Threading.Interlocked.Decrement(nbUsers), nbUsers + 1)
        End Sub
    End Class
End Namespace
Créé le 19 juin 2005  par Didier Danse

Lien : Utilisation du Global.asax

 
Sélectionnez
Namespace Developpez

    Public Class Global
        Inherits System.Web.HttpApplication
        Public Shared temps As Integer
        Private debut As DateTime

        Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
            debut = DateTime.Now
        End Sub

        Protected Sub Application_EndRequest(ByVal sender As Object, ByVal e As EventArgs)
            temps = debut - DateTime.Now
        End Sub
    End Class
End Namespace

Et dans la page où l'on souhaite afficher cette durée:

 
Sélectionnez
LaTime.Text = Global.temps.ToString
Créé le 19 juin 2005  par Didier Danse

Lien : Utilisation du Global.asax

Dans le Global.asax :

 
Sélectionnez
Imports System.Web.Mail
Imports System.Text

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 
	Dim ex As Exception = Server.GetLastError().GetBaseException()
	Using message As New MailMessage()
		message.IsBodyHtml = True
		message.Priority = MailPriority.High

		Dim from As New MailAddress("ton_email_from@ton_domaine.com")
		Dim [to] As New MailAddress("ton_email_to@ton_domaine.com")
		Dim BoiteBug As New MailAddress("boite_bug@ton_domaine.com")

		message.Sender = from
		message.[To].Add([to])
		message.[To].Add(BoiteBug)
		message.Subject = ex.Message

		Dim chaine As New StringBuilder()
		chaine.Append("<b>Erreur sur le site</b><br><br>")
		chaine.Append("Détails : <br><br>")
		chaine.Append(String.Format("Date : {0}<br><br>", DateTime.Now))
		chaine.Append(String.Format("Pile : {0}<br><br>", ex.StackTrace))
		chaine.Append(String.Format("Source : {0}<br><br>", ex.Source))
		chaine.Append(String.Format("Url :", Request.Url))

		message.Body = Server.HtmlEncode(chaine.ToString())

		Dim smtp As New SmtpClient("localhost")
		smtp.Send(message)
	End Using
End Sub



Remarque: Il se peut que le serveur SMTP refuse l'envoi de l'email dans le cas où l'on spécifie une adresse mail invalide pour la propriété From.

Créé le 17 décembre 2003  par David Pedehourcq, Immobilis

Bien sûr que non, ce n'est pas normal. Actuellement, je n'ai rencontré ce problème qu'avec une utilisation de ZoneAlarm sur la machine sur laquelle se trouve l'application.

Vérifiez que vous ne possédez pas ce firewall ou, en tout cas, qu'il n'est pas actif car il empêche la création d'un cookie temporaire nécessaire pour garder en mémoire le SessionID.

Créé le 4 septembre 2006  par Didier Danse

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.