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 :

[VB.Net][2.0] DataSet dans une variable de session


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 12
    Points
    12
    Par défaut [VB.Net][2.0] DataSet dans une variable de session
    Bonjour à tous,
    bon voila je suis un peu a cour d'idées la.
    Je vous explique mon prob:
    J'ai un formulaire web fait en aspx.
    Voici le mécanisme que j'utilise dans toutes mes pages de données :
    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
    50
    51
    52
    53
    54
    Imports Westwind.Web.data
    Imports System.data
     
    Partial Class objet
        Inherits System.Web.UI.Page
     
        Public MyData As DataSet
        Dim MyDataAccess As New DataAccess
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            If Page.IsPostBack = False Then
                Data_Load()
                'si on arrive sur la page, on charge les données
            Else
                MyData = Session("mydata")
                'si on a rechargé la meme page (pour redessinner un contrôle)
                'on récupère simplement les données dans une variable de session.
                'ceci évite de perdre ce qui a été encodé en rechargeant les données de la DB
            End If
        End Sub
     
        Private Sub Data_Load()
            'Placez ici le code utilisateur pour initialiser la page
            'MyDataAccess = New DataAccess
            MyData = New DataSet
            MyData = Session("mydata")
     
            'l'objet de la demande est dans la table etud
            MyDataAccess.Load_Etud(Session("matricule"), MyData)
     
            wwWebDataHelper.FormBindData(Me)
            Session("mydata") = MyData
        End Sub
     
        Private Sub BSuiv_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BSuiv.Click
            Dim MyComment As String
            MyComment = TComment.Text
            MyComment = MyComment.Trim
            'vérification de la longueur du texte avant de permettre l'update.
            '50 signes minimum
            If (MyComment.Length > 50) Then
                wwWebDataHelper.FormUnbindData(Me)
                MyDataAccess.Update_Etud(MyData)
                Response.Redirect("famille.aspx")
            Else
                LHideLimite.Visible = True
            End If
        End Sub
     
        Private Sub BPrec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BPrec.Click
            wwWebDataHelper.FormUnbindData(Me)
            MyDataAccess.Update_Etud(MyData)
            Response.Redirect("identite.aspx")
        End Sub
    End Class
    donc en gros au chargement de la page je charge mes donées dans le dataset MyData, et je sauvegarde celui ci dans une variable de session.
    La variable de session me sert comme indiqué dans le code a ne pas devoir le recharger dans le cas ou la page elle doit etre rechargée.

    Toutes mes pages fonctionnent suivant ce schéma mais je met celle-ci car c'est la + simple et ne contient pas d'autres méthodes que les deux boutons pour changer de page (en avant ou en arrière)

    Le problème est le suivant, le serveur perd de manière relativement aléatoire ce qui est chargé en mémoire.
    Je me retrouve avec des NullreferenceException et des ArgumentNullException dans l'EventViewer dans tout les sens et ce principalement au moment ou j'appelle ma méthode d'update qui prend en paramètre mydata.

    C'est à n'y rien comprendre parce que le temps qu'il s'écoule avant que ça plante n'a pas l'air d'etre identique a chaque fois.
    J'ai mit le timeout session a 200, j'ai décoché "Arrêter le processus de travail après une période d'inactivité" dans le pool d'application.
    ça a rien changé

    L'application tourne en framework 2.0 sur windows server 2003 sp1 iis 6!

    Bon je sais pas si j'ai été assez clair/complet mais n'hésitez pas si vous avez besoin de plus d'infos pour pouvoir me sortir de ce problème
    MAis en gros: es ce qu il y aurait encore un autre mécanisme de timeout qui m'aurait échappé?

    edit: je complète avec une exception qui se produit lors du chargement de la page donc meme pas sur un objet que j'ai instancié moi meme :/

    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
    ...
     
    Informations sur le processus : 
        ID de processus : 796 
        Nom du processus : w3wp.exe 
        Nom du compte : AUTORITE NT\SERVICE RÉSEAU 
     
    Informations sur l'exception : 
        Type d'exception : NullReferenceException 
        Message d'exception : La référence d'objet n'est pas définie à une instance d'un objet. 
     
    Informations sur la demande : 
        URL de la demande : http://.../sse/emploi.aspx 
        Chemin d'accès à la demande : /sse/emploi.aspx 
        Adresse d'hôte de l'utilisateur : 172.17.9.39 
        Utilisateur :  
        Est authentifié : False 
        Type d'authentification :  
        Nom du compte de thread : AUTORITE NT\SERVICE RÉSEAU 
     
    Informations sur le thread : 
        ID de thread : 1 
        Nom du compte de thread : AUTORITE NT\SERVICE RÉSEAU 
        Emprunte une identité : False 
        Trace de la pile :    à emploi.Page_Load(Object sender, EventArgs e)
       à System.Web.UI.Control.OnLoad(EventArgs e)
       à System.Web.UI.Control.LoadRecursive()
       à System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
    edit2: je ne sais pas pq on a modifié mon titre mais je ne pense pas que mon problème se situe spécifiquement au dataset qui est dans la variable de session. Par contre mes balises etaient pas correctes sorry

  2. #2
    Membre confirmé
    Avatar de jpelaho
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 120
    Points : 487
    Points
    487
    Par défaut
    Les données enregistrées dans la variable session sont elles importantes (en terme de volume) ?

    J'ai un problème similaire dans une application Web ou il y'avait un nombre important de données qui étaient stockées dans des variables Sessions. Pour le résoudre j'ai dû changer le mode de stockage de ces données en optant pour la base Sql Server au lieu de les laisser en mémoire.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par jpelaho
    Les données enregistrées dans la variable session sont elles importantes (en terme de volume) ?

    J'ai un problème similaire dans une application Web ou il y'avait un nombre important de données qui étaient stockées dans des variables Sessions. Pour le résoudre j'ai dû changer le mode de stockage de ces données en optant pour la base Sql Server au lieu de les laisser en mémoire.
    Bin pas gigantesques normalement mais ça serait bien de tenter avec sqlserver.
    Je vais voir si je sais tester ça demain!
    (c'est pour le taf et la si je prends mon pc a distance si jamais ça marche pas je sens que je vais encore chercher pendant des plombes alors je fais une pause )

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Bon on dirait que ton idée était la bonne jpelaho, merci a toi!
    Cependant jvais tout de meme attendre lundi pour affirmer que c'est réglé et mettre le tag résolu vu le coté aléatoire du problème.

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

Discussions similaires

  1. [vb-net] Recherche de texte dans une variable
    Par skaraa dans le forum Windows Forms
    Réponses: 5
    Dernier message: 17/09/2007, 16h48
  2. Réponses: 6
    Dernier message: 30/09/2006, 15h14
  3. lire une donnée dans une variable de session
    Par pblb62 dans le forum Langage
    Réponses: 8
    Dernier message: 21/03/2006, 14h23
  4. Réponses: 19
    Dernier message: 02/02/2006, 23h30
  5. [C#] ArrayList dans une variable de session ?
    Par Oberown dans le forum ASP.NET
    Réponses: 1
    Dernier message: 12/12/2005, 15h50

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