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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Session_Start() dans global.asax c#


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 38
    Par défaut Session_Start() dans global.asax c#
    Bonjour,

    Dans mon projet web, j'ai ajouté un fichier Global.asax.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    <%@ Application Language="C#" %>
     
    <%@ Import Namespace="System.Net" %>
    <%@ Import Namespace="System.Net.Mail" %>
     
    <script RunAt="server">
        public static int nbUsers;
        void Application_Start(object sender, EventArgs e)
        {
            nbUsers = 0;
        }
     
        void Application_End(object sender, EventArgs e)
        {}
     
        void Application_Error(object sender, EventArgs e)
        {}
     
        void Session_Start(object sender, EventArgs e)
        {
            nbUsers++;
     
            if (nbUsers >= 30)
            {
                MailMessage mail = new MailMessage();
     
                //set the addresses 
                mail.From = new MailAddress("aaa@aaa.com");
                mail.To.Add("aaa@aaa.com");
     
                //set the content 
                mail.Subject = "Number of concurrent connections";
                mail.Body = "(" + DateTime.Now + ") IP Connected : " + HttpContext.Current.Request.UserHostAddress.ToString() + " Total number now : " + nbUsers.ToString();
                //send the message 
                SmtpClient smtp = new SmtpClient("mail.aaa.com");
     
                NetworkCredential Credentials = new NetworkCredential("aaa@aaa.com", "########");
                smtp.Credentials = Credentials;
                smtp.Send(mail);
            }
        }
     
        void Session_End(object sender, EventArgs e)
        {
            nbUsers--;
        }
     
    </script>
    Je voulais vérifier le nombre de connexions et quand le nombre de session dépasse 30, je veux recevoir un email avec le nombre de session actuel et le IP de l'usager. Tout fonctionne mais dans les courriel, je remarque qu'il y a parfois des IP qui ouvrent plusieurs session à quelques secondes d'intervalle et plusieurs fois de suite.

    Comment Est-ce possible que le code Session_start() soit exécuté plusieurs fois pour un même usager ?

    merci et bonne journée

    Richard

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par marric01 Voir le message
    Comment Est-ce possible que le code Session_start() soit exécuté plusieurs fois pour un même usager ?
    En fait une IP peut être utilisée par plusieurs utilisateurs distincts. Prenons l'exemple d'une société de 20 personnes. Sur le LAN, en local, ils ont chacun une IP différente. Par contre pour aller sur Internet, tout le monde passe par le même proxy, et donc par la même IP publique (l'IP qui est exposée sur Internet).

    Donc toi, tu ne vois que l'IP publique... Or tu as bien 20 utilisateurs différents sur ton site.

    Le meilleur moyen à mon avis est d'identifier un utilisateur par ses identifiants.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/04/2008, 17h18
  2. [2.0] Redirect dans global.asax
    Par cyrilc dans le forum ASP.NET
    Réponses: 4
    Dernier message: 22/11/2007, 13h38
  3. Réponses: 3
    Dernier message: 12/02/2007, 03h14
  4. [C#][2.0] Appel à une fonction dans global.asax
    Par lilianjee dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/10/2006, 15h58
  5. [WebForms]Etablir connection dans global.asax
    Par Ant8386 dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 19/06/2006, 09h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo