Сессия ASP.NET внезапно завершается

Сеанс моего приложения внезапно завершается, и я не вижу никаких ошибок, генерируемых в Application_Error в Global.asax. Кроме того, срабатывает событие Session_Start, но не Session_End. Это происходит после того, как я размещаю приложение на сервере и не происходит на моей машине разработки.

Шаги для создания этого автоматического выхода заключаются в переключении между загружаемыми страницами и отображением списка объектов (Клиент, Менеджеры и т. д.). Примерно через 30-40 секунд активности пользователь выходит из системы и отображается экран входа в систему. Любые идеи, что может пойти не так за кулисами?

Web.Config имеет следующие настройки для сеанса и аутентификации:

<sessionState timeout="60" mode="InProc" cookieless="false"/>

аутентификация:

<forms name="XXX.AUTH" loginUrl="~/login.aspx" protection="All" timeout="60" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="~/default.aspx" enableCrossAppRedirects="false"/></authentication>

person A9S6    schedule 14.07.2011    source источник


Ответы (5)


Вы размещаете в среде общего хостинга (например, у хостинг-провайдера, такого как GoDaddy)? Они могут перезапускать рабочий процесс IIS каждую минуту или около того, и в этом случае вы потеряете информацию о сеансе. Чтобы избежать этого, вам придется использовать какой-либо тип внепроцессного состояния сеанса, например, сервер состояний или сервер состояний Sql.

Вот MSDN статья об этом.

person Jason    schedule 14.07.2011
comment
Вы имеете в виду режим = stateServer? Да, это среда общего хостинга. Если я использую stateServer, мне нужно указать настройки server:port, откуда я могу их получить? Нужно ли мне также настраивать IIS/сервер? - person A9S6; 14.07.2011
comment
Да, вы можете использовать режим = stateServer или режим = SQLServer. Кто твой хозяин? Я совершенно уверен, что GoDaddy не поддерживает это, потому что столкнулся с этим ранее. - person Jason; 14.07.2011
comment
Это сайт клиента (у меня есть к нему доступ только по FTP), и я не уверен насчет провайдера, но при поиске whois появляется ns1.microsoft2008hosting.com, а microsoft2008hosting.com неактивен. - person A9S6; 14.07.2011
comment
попробуйте использовать следующие настройки web.config, чтобы быстро проверить это: ‹режим аутентификации=Forms› ‹forms cookieless=UseCookies /› ‹/authentication› Посмотрите, не истечет ли время ожидания, когда вы это сделаете (временно) - person Jason; 14.07.2011
comment
Пытался. Та же проблема, вышел из системы. - person A9S6; 14.07.2011
comment
Если я использую режим SQLServer, нужно ли мне создавать определенную таблицу внутри SQLServer или любую другую конкретную конфигурацию? Это сложно, я имею в виду? - person A9S6; 14.07.2011
comment
Помечено как ответ: я подтвердил поставщику клиента (повторно изобрел), и они настроили пул приложений, назначив ему еще несколько ресурсов, после чего проблема исчезла. - person A9S6; 19.07.2011

Вы проверили, не перезапускается ли пул приложений для веб-сайта? Если это произойдет, приложение будет остановлено как вкопанное. Кроме того, многие приложения запускаются в пуле приложений, возможно, другое приложение приводит к сбою пула и уносит с собой ваше приложение.

person Bobby Borszich    schedule 14.07.2011
comment
Как я могу это проверить? У меня есть FTP-доступ к сайту, может быть, мне нужен доступ к админке? - person A9S6; 14.07.2011
comment
Можете ли вы RDP на сервер? если да, то вы можете проверить это ... на виртуальном хостинге у вас действительно нет возможности проверить это, не связавшись со службой поддержки - person Bobby Borszich; 14.07.2011
comment
Нет, я не могу RDP - это виртуальный хостинг. - person A9S6; 14.07.2011
comment
маловероятно, что у них происходит авария, о которой они не подозревают. Можно ли подкинуть простой ап на место для проверки? или отправить приложение на другую учетную запись хостинга? ваш локальный разработчик никогда не будет таким же, как сервер. - person Bobby Borszich; 14.07.2011
comment
Я постараюсь получить от клиента больше информации о веб-хостинге и о том, могу ли я получить доступ к панели администратора. - person A9S6; 14.07.2011

Вы пропустили изменение значения срока действия сеанса в свойствах пула IIS.

person lock    schedule 14.07.2011

Вы пытались указать machineKey в своем web.config?

<machineKey 
validationKey="random_validation_key" 
decryptionKey="random_decryption_key" 
validation="SHA1" decryption="AES" />

Вы можете сгенерировать эти ключи здесь: http://aspnetresources.com/tools/machineKey.

Кроме того, если вы измените более 15 файлов внутри приложения (файлы aspx и т. д.), это автоматически вызовет перекомпиляцию кода, в результате чего вы можете потерять сеанс, подробнее здесь: http://msdn.microsoft.com/en-us/library/s10awwz0(v=vs.85).aspx

person Terry Kernan    schedule 16.09.2013

Сессия — это просто файл cookie, и у каждого файла cookie есть время. Возможно вы не правильно указали время. Проверьте файл web.config.

person Saeed Neamati    schedule 14.07.2011
comment
Добавил настройки сеанса в исходный пост. - person A9S6; 14.07.2011
comment
Сессия — это не просто файл cookie. В контексте веб-браузера, конечно, это просто файл cookie, но период ожидания файла cookie абсолютно не отражает на 100% период ожидания для связанного сеанса в службе управления сеансом. Некоторые файлы cookie сеанса могут истечь в конце сеанса просмотра или никогда, в то время как сам сеанс может быть завершен, например, после 15 минут бездействия. - person h0r53; 17.01.2017