2011-02-03 45 views
4

我對以下幾點感到困惑: 我在Global.asx的Session_Start()中設置了一個帶有一些邏輯的asp.net網站。我預計這甚至只會在會議期間觸發一次。但是,每次請求都會觸發該事件。ASP.Net Session_Start始終觸發

當我聲明一個虛擬會話對象時,解決了這個問題。 另外我可以解決這個問題,當我在web.config中添加<sessionState mode="InProc" />。我使用IIS7和我檢查了默認值,這已被設置爲「正在處理」。

我錯過了什麼?這是正常的行爲嗎?即使我沒有聲明會話對象,我也期待這個事件能夠正常工作。

回答

1

我覺得出現這種情況,如果正在使用的瀏覽器不允許使用cookie。而且,如果應用程序池正在重新啓動,則會話將會丟失。

<sessionState cookieless="true" /> 

這將解決不被允許的Cookie問題..

+0

你不使用`Session_Start`和`Session_End`作爲*** Count ***用戶嗎? 我使用WebFarm,sessionsate模式SqlServer。 – 2016-11-05 13:46:52

1

你會檢查:

  • 啓用了Web瀏覽器的cookies?
  • 如果您希望禁用瀏覽器cookie,您將需要無Cookie的會話狀態管理(這不是一個好的選擇,因爲會話參數將位於查詢字符串中)。
  • 在Global.asx中的Application_Start過程中,如果你在那裏做某事,你檢查過沒有拋出一些讓你的應用程序崩潰並結束的異常嗎?
  • 在Application_Start之後和Session_Start之前的任何階段,你在做什麼?如果這是你的情況,請檢查與前一點相同的內容。
+0

如何以編程方式獲取Web瀏覽器Cookie是否啓用? – 2016-11-05 13:47:48