我已經四處尋找有關此問題的提示,但是我看到的所有內容都是針對Web應用程序的,但我正在製作一個常規的ASP.NET Web表單網站。請隨身攜帶,我是.Net新手。會話變量在會話過期前丟失
用戶登錄後,我設置了一個Session變量來存儲他們的ID。此ID用於加載諸如其用戶名的內容。該名稱將首先正確顯示,顯示Session變量已被使用。但是,如果我在幾分鐘後刷新頁面,則用戶名稱爲空,表示Session變量現在消失。
我讀過默認會話超時是20分鐘。我在我的託管服務提供商的Asp.net設置中證實了這一點。但是這個變量在20分鐘之前就已經丟失了。
我也看了,我應該有一個Global.asax文件與下面的代碼:
void Session_Start(object sender, EventArgs e)
{
Session.Timeout = 20;
}
我這樣做,但幾分鐘後,我仍然失去了變數。然後我讀,我應該把下面的代碼在我的web.config:
<configuration>
<system.web>
<sessionState mode="InProc" timeout="120" />
</system.web>
</configuration>
所以我這樣做,但隨後產生的錯誤說:「分析器錯誤信息:這是使用註冊的節是錯誤的as allowDefinition ='MachineToApplication'超出了應用程序級別。此錯誤可能是由於虛擬目錄沒有被配置爲IIS中的應用程序。「
我不知道還有什麼可以嘗試的。我創建的網站位於我的域的子目錄中,我編輯的web.config和global.asax文件位於該子目錄中,所以我不認爲其他地方存在衝突嗎?
我一直堅持這一段時間,任何幫助非常感謝。
謝謝馬克,我會試試。由於我剛接觸.Net,因此我不認爲必須將子目錄設置爲IIS中的應用程序,因爲它是一個Web表單網站而不是應用程序。我會給這個鏡頭 – Cineno28 2014-11-08 13:31:28
IIS中的應用程序更像是一個操作區或一個獨立的實體。這意味着它內部的任何東西都可以在它自己的內存空間中運行您必須小心,因爲任何應用程序通常都會默認繼承根應用程序的屬性,但您可以在自己的應用程序範圍內重載它們。 – 2014-11-08 15:54:48
很高興知道,謝謝!這可能聽起來像一個愚蠢的問題,但我對.net開發很陌生。我已經分配到的網站使用Windows託管,並在根目錄下有一個php站點。他們現在在一個子目錄中有一個asp.net站點,並要求我在另一個子目錄中創建這個額外的.net站點。是在根源的PHP網站會導致衝突?我不知道他們爲什麼這樣設置它。我將按照你的指示將這個目錄設置爲一個應用程序,但是我想問問這是否可能導致另一個問題 – Cineno28 2014-11-08 16:26:18