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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top