2011-04-13 72 views
6

我在寫一個asp.net Web應用程序。我寫了一個登錄頁面來驗證用戶身份,並將他們的UserID存儲在Session["UserID"]中。網絡應用程序中的每個頁面都將檢查有效的Session["UserID"]。如果無效,則將用戶重定向到登錄屏幕。asp.net - 維護會話,同時調試和重建解決方案?

這很好用,但它減慢了我調試網站上每個頁面的能力。每次我對*.cs文件進行更改時,都需要按F6重新構建解決方案。這樣做會破壞我的會話,這意味着我需要返回登錄屏幕,輸入我的用戶名和密碼,單擊我正在處理的頁面,執行我的測試,更改我的代碼並重復代碼。

有沒有辦法讓我的會話每次都重新生成我的解決方案,因此我不必每次都登錄登錄頁面?

回答

3

不幸的是,我不知道你會找到解決這個限制的方法。每次構建項目時,都會觸發Web應用程序的重新啓動。即使您使用持久存儲保留會話,您也將失去在瀏覽器中設置的會話Cookie。

您可以在應用程序中添加「記住我」功能。您需要執行一些重新實現操作,以便將數據存儲中的當前用戶身份驗證信息保留在不受ASP.NET會話狀態影響的情況下。另外,您應該將該信息的索引存儲在比會話cookie更持久的cookie中。

這是我能想到的最好的,或者至少這是我能想到的最好的,沒有一些重要的.NET安全提供商的擴展。但是,要充分利用它 - 我以前從未嘗試過解決這個特定問題,而且我幾乎不認爲自己是與ASP.NET會話相關的所有內容的專家。

2

您失去會話的原因是因爲您的應用程序在寫入應用程序文件夾時會重新啓動。事實上,當你發佈你的應用程序時,同樣的事情發生,當前登錄的每個用戶都將失去他們的會話。

這是故意的,因爲他們無法知道您在頁面中使用的DLL是否仍在那裏。因此,他們自己監控文件夾,並在寫入文件時觸發重新啓動。

對此沒有解決方法。這實際上是一個節省時間的功能(大部分時間),想象一下追蹤內存損壞錯誤,因爲指針在代碼中移動!