Question

Je travaille sur la mise en œuvre d'un fournisseur d'état de session personnalisé pour mon application ASP.NET MVC.Mon exigence est que je dois stocker les données de session comme xml dans une table personnalisée sur le serveur SQL.

Puis-je utiliser l'existant fournisseur d'état de session SQL (en remplaçant certaines méthodes) ou je dois créer à partir de zéro en implémentant la classe abstraite SessionStateStoreProviderBase?

Était-ce utile?

La solution

Pourquoi n'utilisez-vous pas simplement le serveur SQL comme fournisseur d'état ?Vous pouvez le définir dans la configuration et cela se produit automatiquement, puis le serveur SQL stockera les données sous forme de données binaires sérialisées et les récupérera efficacement ?

La réponse courte est oui, c'est possible, mais il s'agit de réinventer la roue.Devez-vous utiliser les données à d’autres fins ou les modifier vous-même en dehors du processus ?Je serais enclin à utiliser un processus distinct pour cela.Vous allez créer un peu de travail pour vous-même en faisant cela et vous feriez mieux de simplement enregistrer la propriété XML quelque part lorsque vous la définissez dans sessiopn si vous avez besoin de la consulter plus tard.

Faites de votre document XML un objet de session

Session["MyCustomXml"] = mydoc;

var mydoc = Session["MyCustomXml"] as XmlDocument;

puis utilisez la configuration suivante pour qu'elle soit stockée sur le serveur SQL.

<sessionState 
            mode="SQLServer"
            sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
            cookieless="false" 
            timeout="20" 
    />

Si vous avez besoin de le consulter plus tard, enregistrez-le simplement sur le disque quelque part en toute sécurité avec SessionId comme nom de fichier pour le garder unique.

Autres conseils

oui, vous pouvez personnaliser la session de votre fournisseur de classe même avec un serveur SQL ou Oracle.Héritez simplement d'une classe de votre modèle héritant de SessionStateStoreProviderBase et implémentant les méthodes requises qu'il envoie, vérifiez la liste des méthodes requises ici.

Si vous souhaitez utiliser un exemple, voir ici.Cet exemple utilise odbc mais remplace simplement la classe d'accès comme OdbcConnection par SqlConnection et vice versa.

Bonne chance.

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