2014-09-03 59 views
1

首先,我知道存在很多關於會話狀態的問題和帖子。設置會話並重新加載頁面

只是爲了讓你知道:我在我的應用程序中使用「MasterPager」。

當我設置會話(「字段」),一切都很好。但是,當我重新加載我的頁面(當我回到另一頁時),例如Session(「field」)是什麼都沒有。

我example.aspx頁:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    If Not Page.IsPostBack Then 
     ' It doesn't works, when I reload, Session is nothing 
     If Not Session("field") Is Nothing Then 
      example.Text = Session("field").ToString 
     End If 
    End If 
End sub 

Private Sub ClickButtonActionExample() 
    Session("field") = "example text" 
    ' It works 
    example.Text = Session("field").ToString 
End Sub 

我的web.config:

<sessionState 
    cookieless="UseCookies" 
    cookieName=".authz" 
    mode="StateServer" 
    regenerateExpiredSessionId="true" 
    stateConnectionString="tcpip=127.0.0.1:42424" 
    timeout="20" 
    useHostingIdentity="true" /> 
+1

只是爲了檢查,你知道在你的頁面加載代碼將只運行一次(在第一次加載),而不是在隨後的回發... – Paddy 2014-09-03 15:16:45

+0

是@Paddy。如果我按照每個示例返回其他頁面,則會發生此錯誤。 – guinatal 2014-09-03 15:21:57

+0

你在瀏覽器中關閉了cookies嗎? – Donal 2014-09-03 15:28:14

回答

1

當使用無Cookie = 「UseCookies」 它需要客戶端瀏覽器支持cookie。如果瀏覽器不支持cookie - 或cookies被禁用 - 您的會話狀態將不起作用。

如果您設置了Cookieless =「UseCookies」,cookies將始終使用 - 即使瀏覽器或設備不支持它們,或者它們被禁用。

如果設備不支持cookie,會話信息將在隨後的請求中丟失,因爲每個請求都會得到一個新的ID。

我想這是你的情況發生了什麼。

+0

唐納,是否有任何會議或任何我可以使用而不會丟失?每個例子在PHP中都很容易。 – guinatal 2014-09-03 15:55:39

+0

@guinatal用你的web.config代替它: Donal 2014-09-03 15:58:12

+0

Donal,它的工作原理。但是我記得我已經改變模式「StateServer」,因爲它會更快。你知道它的優勢嗎? – guinatal 2014-09-03 16:05:27