Тайм-аут сеанса обработан, но все еще не работает в asp.net? - PullRequest
1 голос
/ 18 апреля 2011

Я установил тайм-аут на 30 минут в web.config, как показано ниже

    <forms name=".FormsAuth" loginUrl="/Login.aspx" timeout="30" protection="All" 
slidingExpiration="true" >

    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" 
stateNetworkTimeout="300" sqlCommandTimeout="300"  sqlConnectionString="data 
source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="30" />

На странице главной страницы.Я установил SeTtime на 30 минут, чтобы он мог перенаправить страницу входа.

Dim sessionExpiredUrl As String = Request.Url.GetLeftPart(UriPartial.Authority) & "/labor"
Dim script As New StringBuilder()
script.Append("function expireSession(){ " & vbLf)
script.Append(String.Format(" window.location = '{0}';" & vbLf, sessionExpiredUrl))
script.Append("} " & vbLf)
script.Append(String.Format("setTimeout('expireSession()', {0}); " & vbLf, Me.Session.Timeout * 60000))
' Convert minutes to milliseconds 
Me.Page.ClientScript.RegisterClientScriptBlock(Me.[GetType](), "expirescript", script.ToString(), True)

Работает нормально.через 30 минут он перенаправляется на страницу входа.Но если я нажимаю на страницы, которые имеют объект сеанса в « 25 MINS ».Это исключение [NullReferenceException: Object reference not set to an instance of an object.].

Я не понимаю, почему объекты сеанса становятся «нулевыми» до 30 минут и как с этим справиться?

Редактировать: Ошибка здесь происходит.

 mUser = CType(Session("user"), User)
Dim processTime As String = mUser.GetLastProcessTime(lastProcessTime) // Error happening here

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

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

0 голосов
/ 18 апреля 2011

Это потому, что вы установили SlidingExpiration = true, а срок действия Sliding истекает, когда срок действия действительного cookie-файла аутентификации сбрасывается, если запрос сделан и интервал more than half of the timeout истек.

http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.slidingexpiration.aspx

...