我寫了一個複合web控件,用於幾個web應用程序。如果我使用會話變量,例如HttpContext.Current.Session("MyProgramMemberId")
,是否存在主機站點也可能定義了相同會話密鑰名稱的風險?構建複合控件和使用會話時,它們是否會與主機應用程序發生衝突?
如果您遇到問題,我想聽聽您的經驗。如果你有你信任的網站引用,這將是一個獎金。
謝謝!
我寫了一個複合web控件,用於幾個web應用程序。如果我使用會話變量,例如HttpContext.Current.Session("MyProgramMemberId")
,是否存在主機站點也可能定義了相同會話密鑰名稱的風險?構建複合控件和使用會話時,它們是否會與主機應用程序發生衝突?
如果您遇到問題,我想聽聽您的經驗。如果你有你信任的網站引用,這將是一個獎金。
謝謝!
我不能說我有這方面的任何實際經驗(主要是因爲我不會這樣做),但是是的,它是絕對可能你可能與另一個會話變量發生衝突託管的Web應用程序。
我建議刪除對會話變量的依賴,而改爲使用ViewState變量。這些對您的控制的特定實例更加孤立,因此不應相互衝突。當然,根據您需要存儲的內容進行考慮,您需要小心地嘗試在視圖狀態下存儲大型對象,列表,字典以及敏感信息(最終傳輸到客戶端)。但是根據你的示例代碼,它看起來像是一個簡單的Id屬性,它很小(通常)不敏感。
這也取決於你如何設置你的網站。如果您在不同的Web應用程序中重新使用該控件,但在同一個站點上,則不應該成爲問題。如果你在同一個應用程序中重新使用它們,這將是一個設計問題。
如果您問是否需要擔心如果您訪問共享主機時會話名稱會發生衝突,您無需擔心。你將不得不擔心的是如果你正在存儲你的會話InProc。如果您正在存儲InProc值,並且您的站點負載均衡,則平衡器可能會選擇不同的服務器來爲您的內容提供服務。
感謝您的洞察!這就是StackOverflow真棒的原因 – MADCookie 2010-12-22 18:33:39