ASP.NET MVCでカスタムセッション状態プロバイダの実装
-
16-12-2019 - |
質問
ASP.NET MVCアプリケーションのカスタムセッション状態プロバイダの実装に取り組んでいます。私の要件は、SQL Serverのカスタムテーブルにセッションデータをxml
として保存することです。
既存の SQL Session State Provider (いくつかのメソッドを上書きする)または抽象クラスSessionStateStoreProviderBase
を実装することで、スクラッチから作成することができますか?
解決
州プロバイダとしてSQL Serverを使用しているのはなぜなのですか?これが自動的に設定され、SQL Serverはデータをシリアル化されたバイナリデータとして保存し、それを効率的に取得します。
短い答えはyesです、あなたはできますが、それは車輪を再発明しています。あなたは他のもののためにデータを使う必要がありますか、それともそれをプロセスの外に編集する必要がありますか?私はこれに分離されたプロセスを使う傾向があります。これを行う自分のために少し作業を創造するつもりで、後で見る必要がある場合はSESSIOPNで設定したときにXMLプロパティを保存することをお勧めします。
XML文書をセッションオブジェクトに作成する
Session["MyCustomXml"] = mydoc;
var mydoc = Session["MyCustomXml"] as XmlDocument;
.
は次の設定を使用してSQL Serverに保存されています。
<sessionState
mode="SQLServer"
sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
cookieless="false"
timeout="20"
/>
.
後で見る必要がある場合は、それをユニークに保つためのファイル名としてsessionIdを使用して安全にSositIdを安全にディスクに保存するだけです。
他のヒント
YES SQL ServerまたはOracleでもクラスプロバイダセッションをカスタマイズできます。SessionStatestoreProviderBaseから継承し、必要なメソッドを継承し、必要なメソッドを実装し、必要なメソッドのリストを実装し、必要なメソッドのリストを確認してください。ここ。
例を使いたい場合は、ここに。 この例ODBCを使用していますが、SQLConnectionへのODBCConnectionとしてAccessクラスの場合は単に置き換えます。