2010-02-02 101 views
3

我正在嘗試使用Channel Factory並將其緩存在我的asp.net mvc中。 我正在使用PerSession實例模式,因爲我需要知道狀態。 因此,我無法立即關閉代理。我不想 重新打開,每次關閉代理。 如果我將代理打開,它將在第12次超時。我可以 增加併發會話超時,但我想知道它是否是 正確的方法去。 我是新來的WCF所以赦免如果我的問題是愚蠢的。 - 預先感謝 Pratt緩存WCF代理?

+2

爲什麼你想緩存它? – 2010-02-02 16:29:14

+0

讓我來解釋一下這個場景。用戶將登錄並且所有數據來自託管在其他站點上的wcf服務。所以對於同一個用戶,代理應該保持良好的訪問服務的所有不同數據部分。我不想每次都創建/打開代理來訪問數據服務。我將其緩存在global.asax的Session Start事件中,並將其恢復爲我所有的數據恢復。有沒有其他方法在性能方面更好? – Pratt 2010-02-03 14:12:28

回答

1

答案可能會激活窗體驗證元素中的slidingExpiration屬性,但默認情況下會打開。這樣,在每次通話之後,定時器重置爲超時值,以便會話在使用期間保持活動狀態。

看到這個MSDN Link: Forms Authentication & slidingExpiration property

編輯 - 迴應評論:

是的,當達到會話超時的時候,你需要能夠再次accesss服務之前重新進行身份驗證。您應該將超時值設置爲您認爲用戶不再活動的默認長度(以分鐘爲單位)(默認30分鐘),然後如果用戶一直保持呼叫,則滑動到期將重置此值。我會嘗試做一些簡單的測試,將超時設置爲1分鐘,並用不同的方案向自己證明。

+1

這很好,但是如果我不關閉並且時間到了,我的代理會發生什麼情況。 clr是否負責清理它? – Pratt 2010-02-02 20:59:24