2012-04-02 52 views
0

我已經實現了一個OpenID提供程序和一個OpenID依賴方,它們都設置在負載平衡環境中。序列化DotNetOpenAuth中的AuthenticationRequest

我已經實現了適當的數據庫存儲,但現在在會話上留下了ProviderEndpoint的依賴關係。

我想以某種方式存儲請求不使用ProviderEndpoint但不依賴於內存中會話的其他一些機制。例如將請求存儲在Cookie或查詢字符串中。

我遇到的問題是我無法序列化IAuthenticationRequestIRequest。 底層的類是內部的,所以我也無法投射到這些。

任何人都有指示如何實現這個沒有使用任何會話?

感謝

回答

1

的類實現IAuthenticationRequestIRequest確實[Serializable]。您應該可以將它們序列化爲跨所有服務器的共享存儲。控制的方法堅持他們是嚴格的方便簡單的網站。你不必使用它。

例如:

IAuthenticationRequest request; // you obtain this from DNOA 
IFormatter formatter = new BinaryFormatter(); 
MemoryStream ms = new MemoryStream(); 
formatter.Serialize(ms, request); 
ms.Position = 0; 
request = (IAuthenticationRequest)formatter.Deserialize(ms); 
+0

能否請您給我如何序列這些接口小費了嗎? 這些類本身是內部的,所以當反序列化時,沒有構造函數被調用。 – Oxmane 2012-04-03 07:09:14

+0

二進制格式化程序不需要公共類。我會加強答案,包括一個樣本。 – 2012-04-04 03:44:09

+0

這很好。現在的問題是,我得到的字符串(在base64編碼之後)對於cookie來說很重要。 我想唯一的選擇是將它存儲在一些數據庫中,對嗎? – Oxmane 2012-04-09 09:29:47