Сессия ASP.Net - PullRequest
       21

Сессия ASP.Net

1 голос
/ 15 сентября 2009

Я использую VSTS 2008 + C # + .Net 3.5 + IIS 7.0 + ASP.Net. Мне интересно, если у меня есть и страница aspx и страница html на моем веб-сайте, будет ли переменная сеанса передаваться только на странице aspx? Или сессия может быть передана как на aspx, так и на html странице? (перевод, я имею в виду ссылку клика пользователя внутри моего веб-сайта, чтобы перейти через мой сайт, например, у меня есть 1.aspx, 1.html и 2.aspx на моем веб-сайте, 1.aspx имеет ссылку на 1.html, когда пользователь нажимает 1.html ссылка в 1.aspx, чтобы перейти на 1.html, я имею в виду перевод на 1.html.)

У меня такая путаница, потому что в aspx мы можем легко получить доступ к состоянию сеанса из объекта сеанса ASP.Net, но для html-страницы я не так, как поддерживается сеанс.

Еще одна путаница, я думаю, сессия - это концепция для ASP.Net, а не для html-страницы, поэтому я думаю, что сессия поддерживается только в aspx-странице. Пожалуйста, поправьте меня, если я ошибаюсь. : -)

Ответы [ 3 ]

3 голосов
/ 15 сентября 2009

Нет, сессия не будет потеряна. ASPX -> HTML -> ASPX в порядке.

В приведенной выше последовательности запрос на страницу HTML также получит cookie, но он будет проигнорирован.

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

Чтобы увидеть это, создайте страницу .aspx, использующую сеанс (например, Session["x"] = "foo";), и сделайте страницу ссылающейся на несколько других ресурсов, таких как изображение или сценарий.

Если затем вы используете монитор трафика HTTP, например Fiddler или Charles Proxy (оба работают со всеми браузерами), вы увидите cookie, включенный в каждый запрос. 1015 *

Страница .aspx ответит заголовком Set-Cookie:, а последующие запросы браузера будут включать заголовок Cookies:.

2 голосов
/ 15 сентября 2009

Как правило, HTML-страницы не имеют доступа к функциональности на стороне сервера, поскольку они просто отображаются так, как есть. По умолчанию они не обслуживаются механизмом ASP.NET, поэтому вы не можете выполнять какую-либо работу .NET на HTML-странице.

Если вы хотите работать с сеансом, вам следует использовать что-то вроде ASPX-страницы.

1 голос
/ 15 сентября 2009

Как сказал devstuff, сеанс не будет потерян, но вы не можете получить доступ к значениям сеанса на html-странице, так как значение сеанса живет на сервере, а html на 100% статичен на стороне сервера ,

Если вам нужно использовать сессию внутри html, вы должны преобразовать его в aspx, но это действительно не сложно, так как разметка html действительна и в aspx.

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