2016-06-16 5 views
1

У меня есть сайт asp.net, работающий на IIS7, и у меня возникла проблема с некоторыми пользователями из университета, внезапно потерявшими свою сессию. Единственное, что имеет место во всех этих случаях, заключается в том, что адрес URL-адреса клиента/хоста пользователя, который они получают на нашем веб-сайте, изменяется на полпути через их сеанс. Чтобы было ясно, это то, что я записываю их доступа к странице:Сайт Asp.net теряет сессию по изменению URL-адреса клиента

Request.UserHostAddress.ToString() 

состояние сеанса отслеживается с помощью стандартного asp.net печенье. Соответствующая строка в файле web.config:

<sessionState mode="InProc" timeout="40"/> 

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

Я добавил файлы cookie в список вещей, которые должны быть зарегистрированы для сайта согласно this article on troubleshooting Session loss. Несколько вопросов:

  1. Возможно ли, что университет отказывается от сеансовых файлов cookie, и наш сервер даже не получает их? И если это так, позволит регистрировать файлы cookie для этого?
  2. Возможно ли, что IIS удаляет файлы cookie, если они не соответствуют предыдущему URL-адресу, связанному с ним?

ответ

0

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

Чтобы избежать этого места на web.config имя домена

<httpCookies domain="domainname.com" .... /> 

с вне www. держать печенье с или с вне его.

Теперь, поскольку вы используете InProc, который запускается как служба и сохраняет сеанс в памяти, а не в базе данных, эта услуга известна тем, что по некоторым причинам происходит отключение сеанса. Чтобы избежать этого, вы должны использовать базу данных для сохранения сеанса.

Другой случай может быть перемещен от https до http, и если у вас есть файл cookie только для того, чтобы быть в безопасности, он снова будет потерян.

связанных Share session between ashx and aspx

+0

Это не * наш * домен, который меняется ... это * ихние *, то есть клиент. Они обращаются к нашей системе через хост, чей адрес изменяется. – monty

+0

Я отредактировал мой вопрос, чтобы прояснить это. – monty

+0

@monty, если адрес изменен, сеанс потерян! – Aristos