2013-06-04 2 views
2

Я разработал веб-приложение ASP.NET, установленное на «живой» IIS 7.5. Веб-приложение использует http-сеансы для передачи параметров между страницами для зарегистрированных пользователей. Это отлично работает на моей машине разработки (протестировано с локальным IIS в VS2010 IDE), но когда это веб-приложение загружается в IIS клиента, и они начинают использовать его (браузеры Google Chrome и IE), в некоторые случайные моменты переменные сеанса кажутся исчезают. Мой первый догадка увеличить значения тайм-аута сеанса с помощью файла web.config, добавив следующую строку:выпуск сеансов веб-приложений ASP.NET

<configuration> 
<system.web> 
    <sessionState timeout="20"></sessionState> 
</system.web> 
</configuration> 

Но это, кажется, не решить проблему. Так что это заставило меня задуматься, какие другие настройки существуют в отношении сеансов? Что-то вроде внутренней папки, которая хранит кеш всех сеансов, которые переполняются в реальном IIS? Есть идеи?

EDIT: Следуя предложению @wy __, я изменил файл web.config и начал видеть ту же проблему на своей машине dev. Вот вся секция system.web как у меня сейчас:

<system.web> 
    <compilation targetFramework="4.0" debug="false"/> 
    <pages validateRequest="false"/> 
    <httpRuntime requestValidationMode="2.0" executionTimeout="110" maxRequestLength="262144"/> 
    <sessionState timeout="20" cookieless="true" regenerateExpiredSessionId="true"></sessionState> 
    </system.web> 

Я также проверил, и есть только один w3wp.exe запущенный процесс.

+0

Убедитесь, что браузер не блокирует куки на компьютере клиента. Поскольку это происходит случайным образом, это маловероятно, но оно должно быть в контрольном списке. – RacerNerd

+0

Можете ли вы рассказать нам больше о настройке IIS? Это единственный сервер IIS, это веб-сад или веб-ферма? Используете ли вы провайдер состояния сеанса InProc, State или SQLServer? –

+0

@RacerNerd: Я не могу быть уверен, так как это происходит на машине клиента. Но они сообщают о той же проблеме для Chrome и IE. – c00000fd

ответ

1

По умолчанию сеанс использует файлы cookie для отслеживания пользовательских сеансов. Если вы не уверены, отключены ли пользователи или нет, вы можете настроить сеанс cookieless.

т.е.

<configuration> 
    <system.web> 
     <sessionState cookieless="true" regenerateExpiredSessionId="true" /> 
    </system.web> 
</configuration> 
+1

Спасибо. Я думаю, что ты что-то делаешь. Я добавил, что вы предложили моему web.config, и я действительно начал видеть ту же проблему на моей машине разработки. Что там может быть? (Я также обновил свой оригинальный вопрос с подробностями.) – c00000fd

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