2016-04-19 3 views
0

У меня есть ascx. В этом ascx у меня есть любое количество элементов управления, с которыми я могу взаимодействовать, и установить переменную сеанса, и она работает так, как ожидалось.Почему сеанс недоступен при загрузке страницы?

Однако, когда (в том же управлении), я пытаюсь установить сеанс в загрузке страницы, я получаю другую ошибку в зависимости от того, как я его реализации:

System.Web.HttpContext.Current.Session("Test") = "Test" 

Он говорит, что, кратко, то сессия объект ничего.

Если, вместо этого, я говорю:

Session("Test") = "Test" 

Затем он говорит мне, что мне нужно, чтобы включить состояние сеанса в любой странице или web.config. Я действительно проверил, и сеанс включен в web.config, и, кроме того, те инструкции сеанса, которые вызываются в ответ на щелчок на элементе управления runat="server", отлично работают.

На данный момент я почти уверен, что моя проблема связана с тем, что мне не хватает знаний о жизненном цикле страницы и объекта сеанса. Поэтому у меня есть два вопроса:

  1. Почему это не работает, как я ожидаю? Я подозреваю, что я пытаюсь вызвать Session до того, как какой-либо другой код, который делает его доступным, выполняется, но что это может быть?

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

+0

Это должно работать, но вы также можете попробовать другой путь, так как ascx имеет ссылку на «страницу», которая имеет ссылку на сеанс: «Страница. Сессия (тест)) =« Тест »' –

+0

Он сообщает мне разрешить сеанс в директиве страницы или web.config. :( – MetalPhoenix

+0

у вас есть 'enableSessionState =" true "' в директиве страницы или web.config? –

ответ

0

Проблема была вызвана наличием нескольких вкладок в одном и том же браузере.

Для уточнения ...

Say может быть вкладка 1 открыта на страницу, прежде чем, где я попытался установить сеанс, потому что я отладки и ленивы и не закрывать другие вкладки.

И тогда, возможно, вкладка 2 является текущей вкладкой, которая только что открылась, когда я начал отлаживать. Единственное изменение кода - это то, где я пытаюсь установить переменную сеанса.

В настоящее время открыты две вкладки с противоречивыми данными состояния сеанса. Когда текущий код пытается установить сеанс, он находится в конфликте с тем, что отправляется туда и обратно в «везде, где есть сеансы». Или, может быть, это не работает так, но закрытие старых вкладок, открытых с помощью «старого кода», и открытие только вкладок, которые сталкиваются с «новым кодом», решает проблему.

+0

В случае, если это может быть проблемой для пользователей вашего приложения, я обсуждал этот вопрос в этом сообщении: http://stackoverflow.com/questions/36367189/use-different-session-if-user-logs-in-multiple -кратного/36367912 # 36367912. – ConnorsFan

+0

Интересное решение, однако, есть две проблемы, которые я не могу преодолеть. 1. Это «частичный», который не имеет формы, и я не могу добавлять формы волей-неволей, потому что это частичное является общесистемным (aspx). Таким образом, я не могу полагаться на состояние представления. Поскольку это частично, я не могу использовать строки запроса для встроенных данных, подобных этому. 2. Нет логинов для этой функции или частично или где-либо на сайте, на самом деле – MetalPhoenix

Смежные вопросы