Implementazione del provider di stato della sessione personalizzato in ASP.NET MVC
-
16-12-2019 - |
Domanda
Sto lavorando per implementare A Provider di stato della sessione personalizzata per la mia applicazione MVC ASP.NET.Il mio requisito è devo memorizzare i dati di sessione come xml
in una tabella personalizzata in SQL Server.
Posso utilizzare il provider di stato SQL sessione esistente (sovrascrivere alcuni metodi) o devo creare da zero implementando la classe astratta SessionStateStoreProviderBase
?
Soluzione
Perché non stai solo usando SQL Server come fornitore di stato?È possibile impostarlo nella configurazione e ciò accade automaticamente, quindi SQL Server memorizzerà i dati come dati binari serializzati e recuperano in modo efficiente?
La risposta breve è sì, puoi, ma reinventa la ruota.Hai bisogno di utilizzare i dati per qualsiasi altra cosa o modificarlo da soli fuori processo?Sarei incline a usare un processo separato per questo.Creerai un po 'di lavoro per te stesso facendo questo e sarai meglio a salvare la proprietà XML Somwhere quando lo si imposta in Sessiopn se è necessario guardarlo più tardi.
crea il tuo documento XML un oggetto sessione
Session["MyCustomXml"] = mydoc;
var mydoc = Session["MyCustomXml"] as XmlDocument;
.
Quindi utilizzare la seguente configurazione, quindi è memorizzata in SQL Server.
<sessionState
mode="SQLServer"
sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
cookieless="false"
timeout="20"
/>
.
Se è necessario guardare in seguito, basta salvarlo in disco con il SessilId come nome file per mantenerlo unico.
Altri suggerimenti
SÌ È possibile personalizzare la sessione del provider di classe anche con SQL Server o Oracle.Basta ereditare da una classe nella tua modella che eredita da SessionStateStoreProviderBase e implementazione dei metodi richiesti che invia, controlla l'elenco dei metodi richiesti qui .
Se si desidera utilizzare un esempio, vedere qui . Questo esempio che utilizza ODBC ma è semplicemente sostituito per la classe di accesso come ODBCConnection a SQLConnection e viceversa.
Buona fortuna.