Новый сеанс для каждой вкладки / окна браузера в приложении ASP.NET MVC 3 - PullRequest
6 голосов
/ 07 марта 2012

Мне нужно иметь новый сеанс для окна / вкладки браузера. Мне известно о том, что ASP.NET назначает одну сессию на процесс. Мне также известно, что браузеры разделяют этот сеанс между всеми открытыми вкладками / окнами приложения. Однако мне нужно найти способ создать новый сеанс для новой вкладки / окна.

Состояние сеанса без cookie также не поддерживается. Я уже посмотрел на это. Я стараюсь сохранить чистоту URL.

Я посмотрел на следующие решения. 1) asp.net - сеанс - несколько вкладок браузера - разные сеансы? . Это решение предлагает использовать свойство IsPostBack, которое недоступно в MVC. 2) https://sites.google.com/site/sarittechworld/track-client-windows. Это выглядит очень сложно, и я не до конца понимаю магию JavaScript, которая в нем происходит. Я не хочу вставлять решение, которое я не понимаю. Кроме того, я не полностью осознаю какие-либо дыры в безопасности, которые может создать это решение.

Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

1 голос
/ 25 марта 2013

Я создал пакет NuGet под названием ASP.NET MVC Conversational Session.Здесь вы найдете больше информации: http://blog.micic.ch/net/asp-net-mvc-conversational-session

Я выпустил первую версию вчера.Взгляните на демонстрационный код или загрузите демонстрационное решение и дайте мне знать, если есть что улучшить.:)

РЕДАКТИРОВАТЬ: По умолчанию: «идентификатор» передается через URL, когда вы используете соответствующий метод расширения в представлении.Но вы можете добавить идентификатор самостоятельно.Это дает вам больше гибкости.(Например, если у вас есть ссылки, которые не генерируются с помощью @ Html.ActionLink ... и т. Д.)

1 голос
/ 07 марта 2012

Единственный способ добиться этого - добавить в URL идентификатор сеанса, который предназначен для сеансов без файлов cookie. К сожалению, вы, похоже, исключили эту возможность из-за некрасивых URL, которые он производит.

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