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 MVC Discussion :

Problème d'instanciation de classe


Sujet :

ASP.NET MVC

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Points : 133
    Points
    133
    Par défaut Problème d'instanciation de classe
    Bonjour à tous,

    J'ai un gros problème pour une appli MVC3. J'ai une dll VB6 contenant des méthodes que je dois appeler via mon appli MVC3. Cette dll contient entre autre une classe devant stocker le nom d'utilisateur et diverses autres variables pour un utilisateur.

    J'instancie cette classe au début du contrôleur mais si je ne la met pas en static, l'objet est instancié à chaque appel de méthode du contrôleur, par contre si je le déclare en static cette fois ci les variables nom d'utilisateur seront les mêmes pour tous les utilisateurs (celui du dernier connectés).

    Je ne vois pas comment faire car au final j'aimerais que à chaque fois qu'un utilisateur lance l'appli via le navigateur, un seul objet soit instancié pour toute la durée d'exécution du programme mais un objet différent par utilisateur.

    Si quelqu'un à une idée ?

    Merci d'avance pour votre aide
    La Solution AGILE de Cartographie et d'Urbanisation des Systèmes d'Information éditée et développée par la société AB+ SOFTWARE
    https://www.abplussoftware.fr

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Crée l'instance à l'initialisation de la session (Session_OnStart), et stocke la dans la session...

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Points : 133
    Points
    133
    Par défaut
    J'ai ajouté la méthode Session_start dans le fichier global.asax.cs ou j'instancie ma classe mais comment récupère mon instance dans le contrôleur ?
    La Solution AGILE de Cartographie et d'Urbanisation des Systèmes d'Information éditée et développée par la société AB+ SOFTWARE
    https://www.abplussoftware.fr

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Points : 133
    Points
    133
    Par défaut
    voila ce que j'ai fait :

    fichier Global.asax.cs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    protected void Session_Start()
    {
         HttpContext.Current.Session.Add("objEchServer", new EchangeServer());
     
    }
    Puis j'ai essayé dans le constructeur de contrôleur de récupérer la session mais elle est nulle.

    J'ai alors ajouté au début de mon contrôleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EchangeServer ech = null;
    Puis dans toutes les méthodes qui utilisent mon objet j'ai rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ech = (EchangeServer)HttpContext.Session["objEchServer"];
    Pour l'instant pas de problèmes sauf que quand je lance mon debug je passe bien par la fonction Session_Start et l'objet est bien instancié comme il le faut et je le récupère niquel.

    Par contre si j'ouvre un nouvel onglet du navigateur et que je tape l'adresse localhost pour simuler un deuxième utilisateur, je ne repasse pas par la méthode Session_Start et donc l'id de la session est le même donc mon objet aussi.

    Faut-il rajouter des paramètres de configuration particulier ?

    J'ai essayé de rajouter cette ligne dans global.asax.cs dans la méthode public static void RegisterGlobalFilters(GlobalFilterCollection filters)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filters.Add(new SessionStateAttribute(SessionStateBehavior.Required));
    Si quelqu'un à une idée ce serait super sympa merci encore pour ta réponse tomlev
    La Solution AGILE de Cartographie et d'Urbanisation des Systèmes d'Information éditée et développée par la société AB+ SOFTWARE
    https://www.abplussoftware.fr

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par alexxxx69 Voir le message
    Par contre si j'ouvre un nouvel onglet du navigateur et que je tape l'adresse localhost pour simuler un deuxième utilisateur, je ne repasse pas par la méthode Session_Start et donc l'id de la session est le même donc mon objet aussi.
    Bah si c'est le même navigateur sur le même PC, c'est pas une nouvelle session... Si tu veux tester une session différente, utilise un autre navigateur ou un autre PC

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Points : 133
    Points
    133
    Par défaut
    ouais c'est niquel je n'y avais même pas pensé, comme quoi faut pas chercher trop compliqué.

    Mais n'y a t-il pas un moyen d'appeler la methode Session_Start dans le code ou de créer une session par le code ?
    La Solution AGILE de Cartographie et d'Urbanisation des Systèmes d'Information éditée et développée par la société AB+ SOFTWARE
    https://www.abplussoftware.fr

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par alexxxx69 Voir le message
    Mais n'y a t-il pas un moyen d'appeler la methode Session_Start dans le code ou de créer une session par le code ?
    Tu peux abandonner la session courante (Session.Abandon), et à la requête suivante ça recréera une nouvelle session

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour instancier une classe
    Par Armulis dans le forum C++
    Réponses: 4
    Dernier message: 29/06/2014, 15h06
  2. [Framework] Probléme d'instanciation des classe dao et des classe service
    Par daly2009 dans le forum Spring
    Réponses: 1
    Dernier message: 03/11/2010, 14h19
  3. Problème d'instanciation de classe C++
    Par gilims dans le forum C++
    Réponses: 18
    Dernier message: 22/10/2010, 16h39
  4. Problème d'instanciation d'une classe
    Par Jahjouh dans le forum C++
    Réponses: 2
    Dernier message: 03/02/2007, 12h50
  5. problème pour instancier une class
    Par gronaze dans le forum C++
    Réponses: 8
    Dernier message: 30/06/2006, 12h21

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