Подтвердить что ты не робот

Управление пользовательским сеансом ASP.Net

Можно ли создать полностью настраиваемый режим состояния сеанса вместо использования Inproc или SQLServer?

4b9b3361

Ответ 1

Да, абсолютно, вы могли бы написать пользовательский магазин состояния сеанса, внеся класс SessionStateStoreProviderBase а затем установите режим состояния сеанса для этой настраиваемой реализации в web.config:

<sessionState 
    mode="Custom"
    customProvider="SomeCustomProviderName">
    <providers>
        <add name="SomeCustomProviderName"
             type="YourNamespace.CustomSessionStateStore"
             connectionStringName="SomeConnectionString" />
    </providers>
</sessionState>

Ответ 2

Я думаю, что это можно сделать так, как вам нравится, но использование баз данных в целом для управления состоянием сеанса (хотя и имеет некоторые недостатки) может принести много преимуществ, проверьте мой блог на простоту с нуля http://techblog.alkumait.net/index.php/2011/12/net-custom-session-implementation/

Ответ 3

Я думаю, что это ценная ссылка для людей, которые хотят иметь пользовательскую реализацию сеанса в базе данных: http://msdn.microsoft.com/en-us/library/ms178589.aspx

Ответ 4

Это более старый вопрос, связанный с тем, что я делаю здесь и сейчас с октября 2014 года.

В принципе, исходные ответы по-прежнему правильны, поскольку вы можете создать собственную систему управления состоянием сеанса OutProc, но теперь, когда Microsoft гораздо более активно участвует в работе с открытым исходным кодом, вы можете так же легко перейти к MSOpenTech и загрузите порт Redis для Windows, который также поддерживается Windows Azure.

Redis - это система управления состоянием сеанса OutProc, которая может быть запущена в отдельном окне процесса/консоли или в качестве службы Windows для хранения значений сеанса/ключа задней панели.

MSOpenTech:

Redis - очень популярный open-source, сетевой, в памяти, ключ-значение хранилище данных. Он известен высокой производительностью, гибкостью, богатым набором структур данных и простой простой API. MS Open Tech имеет работали с сообществом Redis для создания готовой продукции Порт Windows Redis, включая поддержку 64-разрядной версии, установщик для Windows Azure, поддержка NuGet и многое другое.

Redis.io Вступление:

Redis - это открытый исходный код, лицензированный BSD, расширенный кеш-ключ и магазин. Он часто упоминается как сервер структуры данных, поскольку ключи может содержать строки, хэши, списки, наборы, отсортированные наборы, растровые изображения и hyperloglogs

Вы можете использовать его для хранения состояния сеанса для ASP.NET MVC, WebAPi и SignalR, что очень удобно в среде веб-фермы.

Установочный пакет Microsoft.Web.RedisSessionStateProvider

Он легко настраивается через web.config, и когда я говорю легко, я имею в виду просто.

<system.web>
  <sessionState mode="Custom" customProvider="MySessionStateStore">
      <providers>
        <add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="127.0.0.1" port="6379" accessKey="" ssl="false" />
      </providers>
    </sessionState>
</system.web>

Так просто на самом деле, я сначала подумал, что я должен делать это неправильно.;) Но все, что требуется, чтобы обработать состояние сеанса в Redis.

Его порт с высокой производительностью, очень близкий к оригинальной версии POSIX.

Мы используем его для приложения финансовых сервисов, которое сталкивается с большими нагрузками в реальном времени, толкает и тянет через Signalr, который, как указано выше, также "поддерживает" Redis для поддержания состояния сеанса хаба.

Итак, хотя вы все еще можете сделать как принятые ответы, через три с половиной года я бы посмотрел на некоторые из этих альтернатив на опыт управления сеансом ASP.NET по умолчанию, который доступен бесплатно через OSS.

https://github.com/MSOpenTech/redis

http://www.codeproject.com/Articles/636730/Distributed-Caching-using-Redis