2010-01-29 187 views
3

我很好奇,是否有一種方法可以在C#for ASP.NET中從SessionStateStoreProvider(或其他一些可定製的模塊)的上下文中動態更改會話ID。在C#ASP.NET中動態更改SessionID

我正在實現一個自定義SessionStateStoreProvider,並且正在考慮增加會話ID以告訴商店提供商去哪裏尋找會話。我已經實現了一個自定義的SessionIDManager,它可以讓我用所需的標記來擴充新創建的會話ID。問題是該標籤的期望值可能在會話的生命週期中發生變化。例如,會話可以從一個位置讀取,但可能需要寫入不同的位置。在這種情況下,ID最初會被標記爲位置A,但是在寫入時,商店將要寫入位置B.應該更新標記以反映下次會話讀取的位置B.

所以,從SessionStateProviderBase覆蓋的背景下...

public override void SetAndReleaseItemExclusive(HttpContext context, 
    string id, SessionStateStoreData item, object lockId, bool newItem) 

...是有可能改變的會話ID?我知道HttpContext.Session.SessionID屬性是不可設置的。有沒有其他方式來反饋這樣的更新?還是有更合適的跨越呼叫進行這樣的狀態?

我是新來的C#和web開發的一般,所以任何建議,將不勝感激。

回答

1

問完這個問題之後,我相當肯定地認爲不可能動態改變會話ID。

而是與位置信息標籤的會話ID,我結束了使用設置傳遞到SessionStateStoreProvider接口的HttpContext一個cookie:

context.Response.SetCookie(new HttpCookie(...));