Управление состоянием пользовательских сеансов ASP.Net - PullRequest
12 голосов
/ 04 марта 2011

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

Ответы [ 4 ]

11 голосов
/ 04 марта 2011

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

<sessionState 
    mode="Custom"
    customProvider="SomeCustomProviderName">
    <providers>
        <add name="SomeCustomProviderName"
             type="YourNamespace.CustomSessionStateStore"
             connectionStringName="SomeConnectionString" />
    </providers>
</sessionState>
1 голос
/ 03 октября 2014

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

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

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

MSOpenTech:

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

Redis.io Intro:

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

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

Install-Package 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 для поддержания состояния сеанса концентратора.

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

https://github.com/MSOpenTech/redis

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

0 голосов
/ 27 сентября 2012

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

0 голосов
/ 08 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...