2012-07-04 36 views
2

我嘗試我的對象存儲會話在ASMX Web服務Store對象,並獲得在母版頁這個值 - 得空

user = new MyUser(UserName); 
Session["user"] = user; 

,並在頁面加載部分母版頁閱讀,但我得到空

user = (MyUser)Session["user"]; 

,當我用一個簡單的字符串,而不是嘗試對象MyUser

任何想法的工作?

謝謝。

+0

是你的'MyUser'可序列化? – balexandre

+0

是的,它是:'[Serializable]公共類用戶' – ngi

+0

如果你確定它與字符串一起工作,那麼我不知道,對我來說,邏輯部分是根本不工作,他們**將**可能有2個不同的游泳池,而'Sessions'不會像那樣共享。我會使用SQL會話或緩存系統來更改之間的消息。 – balexandre

回答

0

我找到了解決方案! 在母版頁中,我嘗試閱讀Page_Load事件的會話,但它是錯誤的。 當我把它放在Page_Init事件它的工作:)

0

誰是服務的客戶端,誰是頁面的客戶端?他們分享cookies嗎?

這些問題的答案是基本的,因爲會話共享涉及與同一會話ID共享會話cookie。

從你寫的東西不清楚,但很可能你只需要在兩個客戶端(Web服務客戶端和頁面客戶端)之間共享Cookie(例如拷貝)。

+0

我使用相同的客戶端。只需登錄頁面就可以使用AJAX。 – ngi

+0

什麼是「同一個客戶」。網頁瀏覽器?桌面應用程序? –

+0

網絡瀏覽器,感謝您的幫助 – ngi

5

假設運行服務的過程是一樣的服務了您的網頁,你需要確保的WebMethod具有由裝飾方法使會話與

[WebMethod(EnableSession = true)] 

這裏是more detail另一個答案。

+0

謝謝,但我已經使用這個,會話是工作,但是當我嘗試從母版頁中的會話中讀取對象時,獲得null – ngi

+0

@Jaime Torres Ohhhh man,這不是一個「簡單的答案」......這個節省了我幾天工作的完整回滾,直到我陷入了一個問題中,這個單一屬性解決了它......謝謝你。像你的法文名字一樣; 「'J'aime' vraiment taréponse!」(我真的很喜歡你的回答)。 –