2010-04-14 3 views
0

У меня есть веб-приложение ASP.NET, которое по какой-либо причине, когда оно развернуто на любом сервере IIS, будет вести себя так, как страницы кэшируются и, он просто никогда не возвращается на сервер.Завершение сеанса ASP.NET

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

Я нашел это article, в котором говорится, что мне нужно что-то поместить в состояние сеанса ASP.NET, чтобы сессия оставалась действительной.

Когда пользователь подключается к приложения ASP.NET, уникальный идентификатор сеанса будет быть связан с пользователем. Если ничего не помещено в сеанс, то в браузере не будет отправлено ни одного файла cookie. Это означает, что пользователь получит новый идентификатор сеанса в следующий раз, когда откроется новый адрес или страница обновится. Если что-то ставится на сессии (HttpContext.Current.Session [ "Hello] = „привет“), однако, ASP.NET будет выдавать печенье под названием ASP.NET_SessionId. Это печенье содержит пользовательский идентификатор сеанса и печенье истекает в конце сессии (при закрытии браузера).

Я постараюсь, что эта статья рекомендует, так как я не хранить что-либо в сессии.

I также добавили заголовки истечения на страницу:

Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)) 
Response.Cache.SetCacheability(HttpCacheability.NoCache) 
Response.Cache.SetNoStore() 

и поставить некоторые мета-теги в HTML:

<meta http-equiv="pragma" content="no-cache" /> 
<meta http-equiv="cache-control" content="no-cache" /> 

Любые другие идеи относительно того, что причиной такого поведения может быть?

+0

Можете ли вы опубликовать некоторые ваши коды aspx и codebehind, которые выполняют фактическую обработку? – cortijon

ответ

2

Вопрос был связан с IIS.

Directory Security для веб-приложения было установлено только при анонимном доступе с локальной учетной записью пользователя и пулом приложений, специально созданным для приложения.

Оказывается, Integrated Windows AuthenticationиEnable anonymous access необходимо как быть проверены в противном случае вы получите это странное поведение.

FWIW, веб-приложение ASP.NET работает в FRAMESET/FRAME под классическим сайтом ASP, и проблема возникает только при доступе к сайту из локальной сети. Он работал отлично внешне. Он также работал в локальной сети при первом доступе, тогда cookie сеанса должен быть очищен, чтобы он снова работал.

0

Это не похоже на проблему состояния сеанса. Это звучит как проблема с вашим Sub Page_Load

0

Это просто страница входа, с которой это происходит? Если вы пробовали это на нескольких серверах IIS, казалось бы, что-то на вашей странице отключено. Стандартная установка IIS и простая страница ASPX с помощью кнопки приведет к обратной передаче без каких-либо действий. Если вы этого не видите, то это должно быть что-то на этой странице. Попробуйте создать очень простую страницу с помощью только ярлыка и кнопки и убедитесь, что вы можете видеть сообщение назад, и page_load (например, RichO said) работают правильно.

0

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

Убедитесь, что в вашем браузере активированы cookies. Для хранения сеанса требуются файлы cookie.

Если это происходит в вашем блоке dev, установите точку останова в вашей page_load (при условии, что вы не используете MVC) или ваше действие контроллера POST, чтобы увидеть, что на самом деле происходит на стороне сервера.

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

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