2013-06-04 147 views
2

我開發了安裝在「實時」IIS 7.5上的ASP.NET Web應用程序。 Web應用程序使用http會話爲登錄用戶在頁面之間傳遞參數。這在我的開發機器上很好(用VS2010 IDE中的本地IIS進行測試),但是當這個Web應用程序上傳到客戶端的IIS並開始使用它時(Google Chrome和IE瀏覽器),在一些隨機時刻,會話變量似乎消失。我的第一個猜測是,加入這一行,以增加通過web.config文件中的會話超時設置:ASP.NET Web應用程序會話問題

<configuration> 
<system.web> 
    <sessionState timeout="20"></sessionState> 
</system.web> 
</configuration> 

但是,這似乎並沒有解決問題。所以這讓我想知道,會議還有其他什麼設置?像一個內部文件夾,可以讓所有會話的緩存保持在實際的IIS上溢出?有任何想法嗎?

編輯:繼@wy __的建議,我修改了web.config文件,並開始在我的開發機器上看到相同的問題。這裏是整個的System.Web部分,因爲我有現在:

<system.web> 
    <compilation targetFramework="4.0" debug="false"/> 
    <pages validateRequest="false"/> 
    <httpRuntime requestValidationMode="2.0" executionTimeout="110" maxRequestLength="262144"/> 
    <sessionState timeout="20" cookieless="true" regenerateExpiredSessionId="true"></sessionState> 
    </system.web> 

我還檢查和只有一個w3wp.exe進程在運行。

+0

確保瀏覽器不會阻止客戶端計算機上的Cookie。由於它是隨機發生的,這不太可能,但它應該在檢查清單上。 – RacerNerd

+0

你能告訴我們更多關於IIS配置的信息嗎?它是一個單一的IIS服務器,它是一個網絡花園或網絡農場?您是使用InProc,State還是SQLServer會話狀態提供程序? –

+0

@RacerNerd:我無法確定,因爲它發生在客戶機器上。但他們報告了Chrome和IE的相同問題。 – c00000fd

回答

1

默認情況下,會話使用cookie來跟蹤用戶會話。如果您不確定用戶是否關閉它們,則可以配置無Cookie會話。

<configuration> 
    <system.web> 
     <sessionState cookieless="true" regenerateExpiredSessionId="true" /> 
    </system.web> 
</configuration> 
+1

謝謝。我認爲你正在做某件事。我添加了你對我的web.config的建議,並且實際上開始在我的開發機器上看到相同的問題。那裏有什麼可能是錯的? (我還更詳細地更新了我原來的問題。) – c00000fd