Question

côté serveur Code VB asp sur une machine Windows 2003, asp.net 2.0 * installé. Nous allons avoir un problème bizarre où la première fois qu'une utilisateur se connecte au site Web, le Session_OnStart dans les feux Global.asa, mais l'objet de la session est nulle. simple Quelque chose comme:

Session.Timeout = 30

provoque l'erreur suivante: Objet requis: 'Session'

Le site Web a été « créé » dans l'onglet Gestionnaire des services Internet Home Directory, et les sessions sont activées dans la page de configuration du site.

Dans la plupart des cas, l'objet de la session existe si l'utilisateur actualise la page. Mais cette première visite d'un utilisateur unique provoque toujours l'erreur.

Suggestions? Le code n'a pas une erreur, car il a travaillé sur l'ancien système Win2000.

Il suffit de rappeler: Windows 2003 Server, en cours d'exécution IIS6, avec .Net 2.0 installé. site Web est en cours d'exécution comme une application, pas un répertoire virtuel.

Était-ce utile?

La solution

Figured le problème. Il était en raison d'avoir plus d'un travailleur dans la piscine de l'application utilisée pour le site. Comme il n'y avait aucune garantie que le processus de travail traiterait la demande d'un client, et chaque processus de travail créerait sa propre instance de la session du client, la session serait supprimée et recréée lorsque IIS a décidé qu'un processus de travail différent doit traiter une demande. Problème a été résolu en utilisant un seul processus de travail dans la piscine de l'application, et d'obtenir tous les autres sites de la piscine de l'application et dans leur propre.

Je cherche maintenant un moyen d'avoir plusieurs travailleurs dans la piscine d'application, mais d'avoir le bâton client avec le processus de travail. Mais c'est un autre problème que je vais la recherche.

Autres conseils

Tout à fait un problème intéressant.

Nous savons que lorsque la session est explicitement abandonnée ou éventuellement fois sur elle est rapidement détruite. Je voudrais ajouter un code comme le suivant, afin de garantir qu'il ne peut pas arriver.

If Session("test") Is Nothing Then
    Response.Redirect("Whatever.asp")
End If

Vous pouvez également appeler le code qui crée vos objets dans ce bloc; De cette façon, si vous détectez que la session a été en quelque sorte détruit, vous pouvez les recréer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top