2008-10-08 239 views
32

我正在做一個ASP.Net網站的黑盒測試,我需要測試不同的會話超時方案。ASP.NET會話超時測試

我不確定他們完全封裝的會話超時。其他然後讓頁面打開20分鐘是否有更簡單的方法來強制會話超時?

+1

當你說黑盒測試時,我認爲這意味着你無法訪問代碼,配置文件或IIS? :) – 2008-10-08 21:05:14

+0

不回答OP的問題,但相關:如果您只需要測試超時正確與否時的行爲,只需在登錄後重新啓動服務器即可。舊會話將無效 – 2015-12-14 07:30:37

回答

67

減少超時

對此進行測試的最簡單和最非侵入性的方法可能是隻是減少超時一個相當小數量,如3或5分鐘。通過這種方式,您可以暫停幾分鐘來模擬較長的暫停時間,而無需擔心應用程序重新啓動或特殊的重置代碼對測試結果有任何影響。

您可以修改會話狀態超時在幾個地點 - 在全球範圍(在位於適用的.NET framework版本的config文件夾中的web.config),或只爲您的應用程序。

要修改超時只爲你的應用程序,你可以添加以下到您的應用程序的web.config:

<system.web> 
    <sessionState timeout="60" /> 
    ... 

另外,您還可以通過IIS配置對話框修改您的應用程序此相同的設置(我相信你仍然需要爲你的應用程序定義一個web.config,否則編輯配置將被禁用)。

要訪問此,在IIS Web應用程序中單擊鼠標右鍵,並導航到屬性| ASP.NET選項卡|編輯配置|狀態管理選項卡|會話超時(分鐘)。

請注意,您還可以通過代碼操縱此設置 - 如果這是已經在這樣做,不是在web.config文件中的設置將有效地被忽略,你將需要使用另一種技術。

呼叫Session.Abandon()

比設定低超時稍微更侵入性技術將調用Session.Abandon()。儘管如此,一定要從與應用程序分離的頁面調用此函數,因爲在處理當前頁面上的所有腳本命令之前,會話並未實際結束。

我的理解是,這將是檢驗會話超時,而無需實際等待他們一個相當乾淨的方式。

強制重新啓動應用程序

在會話狀態的默認配置,你可以模擬通過完全由導致重新啓動應用程序吹走會話的會話超時。這可以通過幾種方式,其中的一些列舉如下:

  • 回收應用程序池通過
    • 的IIS MMC管理單元
    • 命令行(iisapp/A AppPoolID/R)
    • 修改的web.config,global.asax中,或一個dll在bin目錄
  • 重新啓動IIS通過
    • 的IIS MMC管理單元
    • services.msc,然後重新啓動IIS Admin服務
    • 命令行(IISRESET)

當我提到 「默認配置」,我的意思是一個配置爲使用「InProc」會話狀態模式的Web應用程序。即使Web應用程序重新啓動(StateServer,SQLServer,Custom),也有其他模式可以實際維護會話狀態。

篡改與狀態跟蹤機制

假設你的web應用程序是不是有「無Cookie」模式配置(默認情況下,cookies將被使用),你可以刪除包含會話cookie的來自客戶端瀏覽器的ID。

但是,我的理解是,這不是真的模擬超時,因爲服務器仍然會意識到會話,它不會看到任何人使用它。沒有會話ID的請求將被簡單地視爲需要新會話的看不見的請求,這可能是也可能不是您想要測試的。

1

回收服務器上的應用程序池。

9

頁面添加到網站,並調用Session.Abandon()

2

如果您在cookie存儲您的會話信息,您可以嘗試刪除Cookie。

+0

這可能會工作,因爲sessionID存儲在cookie – 2008-10-08 20:43:09

4

縮短超時時間。

+0

如果它們指定了整個代碼中的超時時間,則這將不起作用,否則在web.config中設置超時時間將起作用 – 2008-10-08 20:42:30

4

反彈應用程序池並且會話將丟失。

,如果你沒有直接的IIS訪問,您可以打開和保存web.config中做同樣的事情(不要用記事本,它搞砸了編碼)。

2

您可以更改超時在webconfig

<authentication mode="Forms"> 
     <forms timeout="10" protection="All" slidingExpiration="true" loginUrl="~/login.aspx" cookieless="UseCookies"/> 
</authentication> 
0

您有兩種選擇: -

1-減少web.config中的會話超時。 2-重新啓動IIS或應用程序池。

5

最簡單的方法是在兩個不同的選項卡中打開頁面,在其他選項卡上註銷會自動使第一個選項卡中的會話過期。 大多數瀏覽器在選項卡上共享會話。所以我覺得它很容易,而不需要修改web.config中的任何東西。 通過這種方式,即使特定功能在會話過期時未處理重定向登錄,也可以進行測試。

0

我通常使用ASP .NET會話狀態服務器。除了開發期間的其他好處,我可以簡單地重新啓動ASP .NET狀態服務以放棄會話。如果您使用的是狀態服務器,只需運行services.msc並重新啓動「ASP .NET狀態服務」。