2009-12-04 1 views
1

У меня очень странная проблема, и я ищу советы. У меня есть веб-сайт ASP.NET, запускающий IIS 6, который работает по большей части. Однако сеансы кажутся случайным образом очищены? Поэтому, если я вхожу в систему ... нажмите, я случайно загрузился. Иногда это происходит через 30 секунд/4 клика. Иногда это первый клик, иногда он даже не позволяет мне войти ... а иногда он отлично работает? (причина, по которой я знаю, что она очищается, потому что я печатаю сеанс, когда я выхожу из системы, и они пусты)случайный тайм-аут сеанса IIS

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

Помимо этого, какие-либо советы о том, как я могу узнать больше о том, что происходит в сеансах?

Безусловно, самая странная часть моей проблемы - это случайность. Это, вероятно, послужит хорошей подсказкой для причины для специалиста IIS/ASP.NET. (по крайней мере, я надеюсь, что так!)

Еще одна подсказка: сайт отлично работает, когда я размещаю его локально, и я получаю проблему, когда принимаю его с моего виртуального сервера godaddy. (Который работает IIS 6)

другая вещь, которую я заметил

на локальном хосте мои печенье выглядеть следующим образом: (от поджигатель) Cookie ASP.NET_SessionId = vgt4ly45frvsm1qsfjsmdcbc; имя пользователя =; demo = true

на размещенном сервере это: Cookie ASP.NET_SessionId = vgt4ly45frvsm1qsfjsmdcbc;

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

Спасибо за ваше время, Andrew

+0

Я предполагаю, что вы имеете в виду, что данные сеанса ASP.NET очищаются наугад? –

+0

да я, .. объект сеанса asp.net – Andrew

+0

Теперь я наконец понял, что ваш вопрос означает .... Я использовал простые сеансы, я думаю .... Сейчас я смотрю на сеансы ASP.NET .... они новы для меня, поэтому я изучаю, как они работают – Andrew

ответ

0

ответить на мой собственный вопрос:

эта ссылка была очень полезна:

http://msdn.microsoft.com/en-us/library/ms972429.aspx

именно эта часть:

фермы серверов ограничения. Когда пользователи переходят с сервера на сервер в ферме веб-серверов, их состояние сеанса не следует за ними. Состояние сеанса ASP является машинным. Каждый сервер ASP предоставляет свое собственное состояние сеанса, и если пользователь не возвращается на тот же сервер, состояние сеанса недоступно. В то время как решения маршрутизации на уровне IP-сети могут решить такие проблемы, гарантируя, что клиентские IP-адреса направляются на исходный сервер, некоторые интернет-провайдеры предпочитают использовать для своих клиентов решение для балансировки нагрузки. Самым печально известным из них является AOL. Такие решения, как AOL, предотвращают маршрутизацию запросов на серверы на уровне сети, поскольку IP-адреса для запрашивающего не могут быть гарантированы уникальными.

Я переключил сеанс входа/выхода в систему, чтобы быть полностью основанным на cookie (все, что мне нужно для моего решения) ... для более безопасной импликации Я думаю, что ASP.NET построил в профиле ... а также ... Сессии ASP.NET, хранящиеся в вашей дате базы ..., которые я не чувствовал, как исследование/внедрение в то время.

Andrew

1

Ваше приложение asp.net может быть переработаны. Утилизация может произойти, если достигнут порог памяти или процессора, или через некоторое время (неактивность 15 минут была стандартной по умолчанию для IIS6).

Когда приложение переработано, все в памяти потеряно. Возможно, вы потеряли данные сеанса.

Чтобы убедиться, что переработка является виновником, вы можете посмотреть счетчик производительности на своем сервере или просто зарегистрировать что-то в обработчике global.asax Application_Start.

Список счетчиков производительности asp.net на IIS6, проверьте https://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0a6c9f07-a70c-4c3d-b93d-5dfef593c744.mspx?mfr=true

Счетчики для «перезагрузки приложения» и «Рабочий процесс перезапускается» являются один вы должны смотреть.

+0

, если мое приложение было переработано, то не нужно было перекомпилировать его? (я не использую предварительно скомпилированный код), когда вы говорите «посмотрите на счетчик производительности», вы имеете в виду объект счетчика производительности? – Andrew

+0

Страницы aspx будут перекомпилированы при вызове, но это будет сделано автоматически (при компиляции страниц просто немного разогревается). –

+0

Я отредактировал ответ с дополнительной информацией о перфомансах. –

0

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

Here's статья MSDN об этом.

+0

гм ... вы в основном имею в виду более чем один файл web.config? ... потому что у меня только один, и я установить его вручную Andrew

+0

спасибо, хотя ... это может привести меня на правильный путь – Andrew

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