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 :
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.
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
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 :/
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
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)![]()
Partager