簡體   English   中英

ASP.Net會話開始和結束問題

[英]ASP.Net session start and end issue

我使用ASP.Net + .Net 3.5 + VSTS 2008 + IIS 7.0 + C#來開發Web應用程序。 我正在創建一個非常簡單的Web應用程序,我剛剛修改了page_load,Session_Start和Session_End。 這是我的代碼,我的問題是我發現會話結束消息在會話啟動消息后立即寫入文件。 我的測試方法只是打開IE來訪問這個頁面。 我認為會議應該持續很長時間,比如幾分鍾。 為什么會話結束如此之快? 即使我不關閉頁面,為什么seeion會結束?

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write("Hello World! ");
    Session["SomeUserData"] = DateTime.Now;
}

protected void Session_Start(object sender, EventArgs e)
{
    using (TextWriter tw = new StreamWriter(@"C:\TestSession\bin\session.txt", true))
    {
        // write a line of text to the file
        tw.WriteLine(DateTime.Now + " Session Started.");
    }
}

protected void Session_End(object sender, EventArgs e)
{
    using (TextWriter tw = new StreamWriter(@"C:\TestSession\bin\session.txt", true))
    {
        // write a line of text to the file
        tw.WriteLine(DateTime.Now + " Session Ended.");
    }
}

即使將Session操作代碼添加到Page_Load方法中,我遇到了同樣的問題,這里是輸出文件內容,您可以看到會話結束事件在會話開始后立即被調用。

2010/7/15 0:11:14 Session Started.
2010/7/15 0:11:14 Session Ended.
2010/7/15 0:11:28 Session Started.
2010/7/15 0:11:28 Session Ended.

喬治,提前謝謝

如果我沒記錯的話,你需要為Session分配一些內容來激活它。 否則ASP.NET每次都會重新生成一個新會話(如果你使用fiddler來檢查新的會話ID)。

編輯:因為session.txt位於bin目錄中。 寫入bin目錄后,應用程序將重新啟動,以便立即觸發Session_End事件。 將session.txt從bin目錄移到其他地方將解決您的問題。

這種行為有時是由過度熱心的反病毒程序引起的。 嘗試禁用防病毒軟件,看看是否有幫助。 如果有幫助,則將站點的目錄添加到排除列表中。

關閉瀏覽器也不會對您的會話產生任何影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM