Comment créer une bibliothèque de classes où je peux obtenir et définir comme l'objet IIS Session
où j'utilise var x = objectname("key")
pour obtenir la valeur ou objectname("key") = x
pour définir la valeur?Comment créer un wrapper d'objet session C#?
Répondre
Normalement j'ai juste une classe statique qui enveloppe mes données de session et rend SÛR type comme:
public static class MySessionHelper
{
public static string CustomItem1
{
get { return HttpContext.Current.Session["CustomItem1"] as string; }
set { HttpContext.Current.Session["CustomItem1"] = value; }
}
public static int CustomItem2
{
get { return (int)(HttpContext.Current.Session["CustomItem2"]); }
set { HttpContext.Current.Session["CustomItem2"] = value; }
}
// etc...
}
Puis, quand je dois obtenir ou de définir un élément que vous souhaitez simplement faire ce qui suit:
// Set
MySessionHelper.CustomItem1 = "Hello";
// Get
string test = MySessionHelper.CustomItem1;
Est-ce ce que vous cherchiez?
EDIT: Selon mon commentaire sur votre question, vous ne devriez pas accéder à la session directement à partir des pages de votre application. Une classe wrapper rendra non seulement le type d'accès sécurisé, mais vous donnera également un point central pour effectuer tous les changements. Avec votre application utilisant le wrapper, vous pouvez facilement échanger Session pour une banque de données de votre choix à tout moment sans apporter de modifications à chaque page qui utilise la session.
Une autre chose que j'aime dans l'utilisation d'une classe wrapper est qu'elle documente toutes les données stockées dans la session. Le programmeur suivant peut voir tout ce qui est stocké dans la session juste en regardant la classe wrapper afin que vous ayez moins de chance de stocker les mêmes données plusieurs fois ou de récupérer des données qui sont déjà mises en cache dans la session.
Comme la classe statique mieux. Cela rend l'accès plus facile. –
Merci. c'est très utile. – Mike
La classe statique est très bonne. –
Je suppose que vous pourriez utiliser un dictionnaire générique comme Dictionary<string, Object>
ou quelque chose de similaire pour obtenir cet effet. Vous devez écrire du code wrapper pour ajouter un objet lors de l'accès à un élément inexistant, par exemple une propriété par défaut personnalisée dans votre Wrapper.
Vous pouvez utiliser quelque chose comme ça
public class Session
{
private static Dictionary<string, object> _instance = new Dictionary<string, object>();
private Session()
{
}
public static Dictionary<string, object> Instance
{
get
{
if(_instance == null)
{
_instance = new Dictionary<string, object>();
}
return _instance;
}
}
}
Et l'utiliser comme ceci
Session.Instance["key"] = "Hello World";
Je m'excuse de commenter une vieille réponse, mais puisque ce dictionnaire est dans un objet statique, est-il possible qu'il soit partagé avec d'autres utilisateurs d'une application web? Dites, si cet objet contenait le nom d'utilisateur, par exemple, serait-ce un problème? – Dave
- 1. Mocking un wrapper de session dans MVC2
- 2. Comment créer un wrapper d'API ultra-simple dans Ruby?
- 3. Comment puis-je créer un wrapper singleton pour PDO?
- 4. Créer une session PowerShell distante dans C#?
- 5. PHP wrapper d'extension pour C++
- 6. pageTest C# wrapper
- 7. SlickGrid C# Wrapper
- 8. C# Ghostscript Wrapper
- 9. C# Wrapper pour Encoding.com?
- 10. Écrire un wrapper de console en C#?
- 11. GnuPG Wrapper avec C#
- 12. Comment écrire mon propre wrapper en C#?
- 13. Window Wrapper Classe C++ (G ++)
- 14. Comment écrire un wrapper API REST en C#?
- 15. comment créer une session (iPhone)?
- 16. C++ & C#, comment créer dll wrapper en C++ pour C# appeler la fonction d'instance dans C++ dll?
- 17. Comment créer et maintenir une session?
- 18. Comment créer un programme wrapper/usr/bin/mysql via la redirection IO?
- 19. Générer un wrapper C à partir de C++?
- 20. C# wrapper pour un tableau de trois pointeurs
- 21. Dois-je créer un wrapper autour de cette entité?
- 22. créer un wrapper autour d'un assemblage tiers - échanger et déconnecter
- 23. SVNKit comme wrapper pour C ou C++
- 24. Comment créer une fonction wrapper $() de type jquery?
- 25. Comment wrapper cette valeur?
- 26. Meilleur wrapper CouchDB pour C#?
- 27. Bibliothèque C++ ou Wrapper pour CouchDB
- 28. Impossible de créer un objet de session
- 29. Comment créer une session sur un serveur en PHP?
- 30. Comment puis-je créer un wrapper pour attendre l'écoute sur un port?
voulez-vous que votre objet de parler à IIS ou que vous venez de faire une comparaison analogue? –
Quelle est votre question, spécifiquement? Comment ajouter '[xxx]' support à votre objet? ou comment rendre un objet disponible partout? ou ... ? –
En fait, je voulais écrire un remplacement pour la session IIS afin que je puisse enregistrer l'état de la session pour une ferme Web. Je voulais l'écrire de telle sorte que je n'aurais pas à changer tous les endroits où la session est actuellement définie ou utilisée. – Mike