Session d’access dans la bibliothèque de classe.

Je développe une architecture d’application qui utilise 2 sous-projets: a) une application Web asp.net (qui couvre l’interface utilisateur et la logique commerciale) et b) une bibliothèque de classes. (il couvre la couche d’access aux données)

Une fois que l’utilisateur du système s’est connecté avec succès, les informations sur l’utilisateur sont stockées dans un object de session.

Le problème auquel je suis confronté est que lorsque j’essaie d’accéder à cet object de session dans un projet de bibliothèque de classes (couche d’access aux données), il renvoie toujours la valeur null.

J’ai besoin d’accéder à l’object de session dans le projet de bibliothèque de classes car, dans mon cas, chaque utilisateur a son propre nom d’utilisateur et mot de passe pour l’access à la firebase database (pour des raisons de sécurité);

Alors, comment puis-je lire et écrire de / vers un object de session dans un projet de bibliothèque de classe

Utilisez l’object System.Web.HttpContext.Current.Session .

Tout d’abord, comme Peri l’a bien remarqué – vous devez réfléchir à nouveau si l’ouverture de connexions de firebase database distinctes pour chaque utilisateur est une bonne idée – car vous perdez le pooling de connexions (différents utilisateurs ne pourront pas réutiliser des connexions existantes) et créer un nouveau fichier SQL. connexion est assez cher).

Si vous souhaitez vraiment conserver des utilisateurs de firebase database distincts, je créerais une interface pour la session abstraite à partir de l’access aux données:

 public interface ILoginDataService { LoginData Current { get; } } 

Et la mise en œuvre transmettrait les données de connexion de la session. De cette manière, votre logique d’access aux données ne dépendra pas d’une session à l’autre. Elle sera donc plus testable et vous séparerez également les problèmes.

Voici le code que j’ai utilisé dans une bibliothèque pour obtenir des informations sur la session.

 public static ssortingng Entity() { ssortingng entity = ""; HttpContext httpContext = HttpContext.Current; if (httpContext.ApplicationInstance.Session.Count > 0) entity = httpContext.ApplicationInstance.Session["EntityCode"].ToSsortingng(); return entity; }