Реализация пользовательской сессии поставщика государства в ASP.NET MVC
-
16-12-2019 - |
Вопрос
Я работаю над реализацией пользовательского поставщика государственного сеанса для моего приложения ASP.NET MVC.Мое требование заключается в том, чтобы сохранить данные сеанса как xml
в пользовательской таблице на SQL Server.
Могу ли я использовать существующие поставщику состояний сеанса SQL SQL (переопределение некоторых методов) или я для создания с нуля, реализуя генеракодицет абстрактного класса?
Решение
Почему вы не просто используете SQL Server в качестве поставщика вашего государства?Вы можете установить его на конфигурации, и это происходит автоматически, то SQL Server будет хранить данные в виде сериализованных двоичных данных и эффективно его получить?
Короткий ответ - да, вы можете, но он повторно изобретает колесо.Вам нужно использовать данные для чего-либо еще или редактировать его вне процесса?Я был бы склонен использовать отдельный процесс для этого.Вы собираетесь создать немного работы для себя, и вам было бы лучше сохранить свойство XML Somewhere, когда вы устанавливаете его в Sessiopn, если вам нужно посмотреть на него позже.
Сделайте свой 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"
/>
.
Если вам нужно посмотреть позже, просто сохраните его на диск Somewhead, безопасно с SessionID в качестве имени файла, чтобы сохранить его уникальным.
Другие советы
Да, вы можете настроить сеанс провайдера класса даже с SQL Server или Oracle.Просто наследующуюся от класса в вашей модели, наследующуюся из SessionStateStoreProviderBase и реализует необходимые методы, которые он отправляет, проверьте список обязательных методов здесь .
Если вы хотите использовать пример, см. Вот здесь . Этот пример с использованием ODBC, но просто замените для класса доступа в виде ODBCConnection к SQLConnection и наоборот.
Удачи.