[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:
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 :cry:
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:
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 :)