2012-02-17 50 views
2

我需要創建並返回用戶會話是否已過期的操作。問題是請求任何操作都會刷新用戶的會話超時。所以,我需要這個動作來不刷新超時。MVC3:不刷新會話的控制器操作

有沒有辦法讓控制器操作有權訪問會話,但不刷新超時?

+0

只是一個未經測試的想法,用[SessionState(SessionStateBehavior.Disabled)]裝飾的控制器刷新會話的超時?如果沒有,也許你可以創建另一個控制器來執行檢查。 – 2012-02-17 20:17:49

+0

看起來他們沒有。但是,Session是空的,這意味着我無法檢查會話是否仍然活動。那是除非我失去了一些東西。 – mtmurdock 2012-02-17 21:15:14

+0

不知道你的上下文......你可以發送會話過期的時間與每個請求,而不是擊中動作,只是檢查客戶端的時間?不太準確,但如果您找不到更好的解決方案,可能會出現這種情況。 – Rophuine 2012-02-17 21:20:00

回答

1

想通了。我們建立了一個http模塊來讀取可以在site.com/.formsauthticket訪問的表單認證票。通過在這個級別處理它,它根本沒有觸發會話。恐怕我不能在這裏提供代碼,但我們設置模塊返回毫秒數,直到會話過期。然後我們使用這個數字來製作一些客戶端定時器。

我們根據我們的解決方案對發現的不同問題的答案here。希望這可以幫助別人!