2013-01-10 2 views
0

J'utilise le code C# sur la page dans laquelle j'attend qu'un utilisateur se connecte. À ce moment, en supposant que les informations de connexion peuvent être vérifiées par la base de données, je définis les variables de session que je veux suivre tout au long de la session. Je n'initialise pas la session n'importe où, mais en définissant les variables de session, cela arrive de toute façon. Je n'ai aucune erreur avec mon code, mais je ne suis pas sûr de le faire correctement.Initialisation correcte d'une session après la connexion

code-behind sur la page directement après la connexion réussie:

Business.User user  = new Business.User(); 

user.SetLabelCompanyId(); 
user.SetLabelUsername(); 

_labelUsername.Text  = user.GetLabelUsername(); 
_labelCompanyId.Text = MySession.Current.CompanyId; 

La façon dont j'appelle _labelUsername.Text est ce que je veux faire, mais la façon dont je l'appelle _labelCompanyId est ce que je ressens serait source de confusion à quelqu'un inconnu avec mon projet. Il accomplit le but de créer la session, mais est appelé différemment que le nom d'utilisateur en dépit d'être utilisé de la même manière. Ce que je préférerais faire est:

_labelUsername.Text  = user.GetLabelUsername(); 
_labelCompanyId.Text = user.GetLabelCompanyId(); 

Et puis quelque part avant que ces lignes initialize MySession. Comment puis-je faire ceci? Quand j'utilise les 2 lignes ci-dessus (sans autre mention de MySession) j'obtiens une erreur que la session est nulle et redirige vers la page de connexion.

+0

Jetez un coup d'œil à [État de session ASP.NET] (http://msdn.microsoft.com/fr-fr/library/ms972429.aspx) –

Répondre

0

La session sera initialisée lorsque l'utilisateur ouvrira le site pour la première fois. Mais pour le moment, votre variable de session n'est pas initialisée. Vous avez besoin de quelque chose comme ceci

//inside in your Business.User class (set reference to System.Web) 
public string GetLabelCompanyId() 
{ 
    string returnValue = String.Empty; 
    HttpContext context = HttpContext.Current; 
    if(context != null) 
    { 
    if(context.Session["CompanyId"] != null) 
    { 
     returnValue = context.Session["CompanyId"]; 
    } 
    } 

    return returnValue; 
} 

Après une connexion réussie, vous pouvez stocker la valeur dans la variable de session.

Je recommande fortement d'utiliser une classe séparée pour accéder à HttpContext et non directement dans votre classe Business.

Questions connexes