我希望每個會話只能執行一段代碼,因此如果用戶在同一會話中導航到包含此代碼的頁面,我不希望這樣段被執行。代碼位於登錄後調用的默認頁面,用戶可以從其他頁面導航到此默認頁面。會話變量在Visual Studio和服務器上行爲不同
我的解決方案:
if (Session["MySessionName"] == null && ConditionTwo) //initially MySessionName won't exist so the if condition resolves to true
{
//Assign Value to MySessionName so the if condition resolves to false next time
Session["MySessionName"] = "MySessionValue";
//Do Something
}
我的問題:
這適用於Visual Studio的罰款,部署到測試服務器這個解決方案似乎不工作,所有的時間之後。如果我註銷並重新登錄,條件Session["MySessionName"] == null
返回false
並且代碼段將不會執行。但是,如果我關閉瀏覽器,重新打開並登錄,它可以正常工作。我檢查了註銷是否進行了適當的會話處理,並且確實如此。
我也試過,
HttpContext.Current.Session["MySessionName"] = "MySessionValue";
//and
Session.Add("MysessionName", true);
,但結果是一樣的。
您是否希望每個新的_session_或每個_authentication_都發生這種情況?因爲這些是不同的東西。會話可以在認證之間持續存在(登錄/註銷) –
我希望每次認證都會發生,每個登錄都需要執行一次。 – DiDi