2013-04-30 5 views
2

Недавно я перевел приложение ASP.Net (3.5) на новый сервер, и у него возникла нечетная проблема, связанная с устранением неполадок.Веб-сайт ASP.Net создает новый сеанс при каждой загрузке

При загрузке каждой страницы независимо от того, какой браузер я использую (IE, FF, Chrome) ASP.Net/IIS выдает мне новый сеанс на каждой загрузке страницы, забыв о предыдущем сеансе, который он вызвал.

У меня есть простая страница для тестирования это следующим образом:

<asp:Button ID="Button1" Visible="true" runat="server" Text="Button" /> 

    <%= HttpContext.Current.Session("Test")%> 
    <br /><br /> 
    <%= Session("GlobalTest") %> 
    <a href="Test.aspx">Reload the page</a> 

в коде у меня есть это для кнопки:

HttpContext.Current.Session("Test") = DateTime.Now.ToLongTimeString 

В Global.asax

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs) 
     ' Code that runs when a new session is started 
     Session("GlobalTest") = "Session Created on : " + DateTime.Now.ToLongTimeString() 
    End Sub 

Когда вы нажимаете кнопку, она изначально отображает значение сеанса просто отлично. Перейдите к перезагрузке страницы, либо по ссылке, либо просто загрузите ее, и информация (за исключением Global, которая теперь обновляется в новое время) исчезнет.

В web.config, сеанс настройки таким образом:

<sessionState mode="InProc" timeout="15" useHostingIdentity="false" cookieless="false" /> 

Кто-нибудь испытывал похожее на это?

+1

Сессия зависит от 'cookies'. Как вы настраиваете 'httpCookies' на web.config? – Aristos

+0

У меня сейчас нет httpCookies в web.config. – Patrick

+0

Затем добавьте его и убедитесь, что вы настроили домен. – Aristos

ответ

0

положить сессии в! IsPostBack правила и попробуйте еще раз

+0

создал это на Page_Load: 'Если не IsPostBack Тогда Session ("Postback_test") = "Post Назад Тест:" + DateTime.Now.ToLongTimeString() End If' и значение, установленное при первой загрузке не отображение вообще (не существует) после сообщения назад, значение сеанса целиком просто исчезает. кажется. – Patrick

+0

вы можете попытаться поставить свои значения сеанса в viewstate и посмотреть, не потеряет ли их тоже. – Alok

0

Убедитесь, что вы не пишете в каталог BIN, Beause, что приведет к сбросу приложения и переменные сеанса каждый раз, когда он записывается.

+0

На этом веб-сайте фактически нет папки с бинами (это веб-сайт через веб-приложение). Я даже взял страницу Test.aspx, которая находилась на этом сайте, в отдельную папку с web.config и глобальную.asmx file и создал новое приложение, и то же самое происходит и в этом небольшом разделе веб-сайта ... Он продолжает забывать переменные сеанса в proc при каждой загрузке. – Patrick

1

Хорошо, я понял. Спасибо за все предложения.

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

Это создает неудобное поведение ... Он не будет устанавливать cookie для всех, но вы можете использовать Session для каждого нормального режима, и он будет работать правильно для первой загрузки, когда он сбрасывает сеанс cookie (и вы aren 't over SSL).

Еще раз спасибо.

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