2010-04-22 22 views
0

J'essaie de déplacer des portions réutilisables de code dans une classe. Cela fonctionne bien sauf lorsque j'essaie d'utiliser Session dans cette classe. Je reçois une erreur:Utilisation de l'état de session dans une classe publique dans ASP.NET?

"Impossible de faire référence à un membre d'instance d'une classe à partir d'une méthode partagée ou d'un initialiseur de membre partagé sans une instance explicite de la classe."

Mon code ressemble à ceci:

Public Class webHousing 
    Inherits System.Web.UI.Page 
    Public Sub GetUserInfo() 
    Dim x as String 
    x = 10 
    Session("x")= x 
    End Sub 
End Class 

J'ai simplifié ce code de manière significative - mais le problème fondamental est présent - essayer de définir une valeur de session à partir d'une classe. J'ai trouvé l'article MSDN suivant 1 mais je ne crois pas que Public/Shared peut être utilisé sur Session?

+2

Je pense que vous pourriez avoir simplifié ce trop - ne vois pas comment cela ne fonctionne pas. – Paddy

+2

Je pense que vous avez déclaré 'GetUserInfo' Shared dans votre propre code. –

+0

@klaus J'ai ... pour que je puisse y accéder à partir d'autres fichiers de code. Si je sors le partagé, je ne peux plus appeler GetUserInfo() par défaut default.aspx.vb – davemackey

Répondre

1

Essayez

HttpContext.Current.Session("x")= x 
+0

Merci James Ma seule question est là est-il un moyen de faire un Imports System.Web.HttpContext ou quelque chose de si Je n'ai pas besoin de définir HttpContext.Current à chaque fois? Cela devient un peu compliqué – davemackey

+0

Non HttpContext est statique, instance est une référence d'objet ce serait normalement System.Web.HttpContext.Current. –