der Timeout-Abnahme
die einfachste und non-intrusive Weise, dies zu testen, ist wahrscheinlich nur die Timeout verringern zu einem ziemlich kleinen Nummer, wie 3 oder 5 Minuten. Auf diese Weise können Sie eine Pause von einigen Minuten einlegen, um eine längere Pause zu simulieren, ohne sich über Neustarts von Anwendungen oder spezielle Rücksetzcodes Gedanken machen zu müssen, die sich auf Ihre Testergebnisse auswirken.
Sie können das Zeitlimit für den Sitzungsstatus an einigen Stellen ändern - global (in der web.config im Ordner config für die entsprechende .NET Framework-Version) oder nur für Ihre Anwendung.
Um das Timeout nur für Ihre Anwendung ändern, können Sie die folgenden web.config hinzufügen können Sie Ihre Anwendung:
<system.web>
<sessionState timeout="60" />
...
Alternativ können Sie auch für Ihre Anwendung durch eine IIS-Konfigurationsdialog diese gleiche Einstellung ändern (Ich glaube, dass Sie immer noch eine web.config für Ihre Anwendung definiert haben müssen, ansonsten wird die Konfiguration bearbeiten deaktiviert).
Um darauf zuzugreifen, klicken Sie mit der rechten Maustaste auf Ihre Webanwendung in IIS und navigieren Sie zu Eigenschaften | Registerkarte ASP.NET | Konfiguration bearbeiten | Registerkarte Statusverwaltung | Sitzungszeitlimit (Minuten)
Beachten Sie, dass Sie diese Einstellung auch über Code ändern können. Wenn dies bereits erfolgt, wird die Einstellung in der Datei web.config ignoriert und Sie müssen eine andere Technik verwenden.
Anruf Session.Abandon()
Eine etwas intrusive Technik als eine niedrige Timeout-Einstellung wäre Session.Abandon() aufzurufen. Achten Sie jedoch darauf, dass Sie dies von einer Seite aufrufen, die von Ihrer Anwendung getrennt ist, da die Sitzung erst dann beendet wird, wenn alle Skriptbefehle auf der aktuellen Seite verarbeitet wurden.
Mein Verständnis ist, dass dies eine ziemlich saubere Möglichkeit wäre, Session-Timeouts zu testen, ohne auf sie zu warten.
Kraft ein Neustart der Anwendung
In einer Standardkonfiguration des Sitzungsstatus, können Sie durch Wegblasen die Sitzungen vollständig ein Session-Timeout simulieren, indem die Anwendung verursacht neu zu starten. Dies kann mehrere Arten erfolgen, von denen einige im Folgenden aufgeführt sind:
- Recycle der app-Pool durch
- das IIS-MMC-Snap-in
- die Kommandozeile (iisapp/a AppPoolId/r)
- modifizierende web.config, global.asax oder eine DLL in dem Verzeichnis ist
- Restart IIS durch
- der IIS-MMC-Snap-in
- services.msc und der IIS-Verwaltungsdienst
- die Befehlszeile (iisreset) Neustart
Wenn ich "Standardkonfiguration" erwähnen, ich meine, Eine Webanwendung, die für die Verwendung des Sitzungsstatusmodus "InProc" konfiguriert ist. Es gibt andere Modi, die den Sitzungsstatus sogar beibehalten können, selbst wenn die Webanwendung neu gestartet wird (StateServer, SQLServer, Custom).
Tamper mit dem Staat Tracking-Mechanismus
Ihre Web-Anwendung Unter der Annahme, nicht mit einem „Cookie-less“ -Modus (standardmäßig wird Cookies verwendet werden) konfiguriert sind, können Sie das Cookie enthält die Sitzung entfernen ID aus dem Client-Browser.
Allerdings ist mein Verständnis, dass dies nicht wirklich simuliert eine Auszeit, da der Server immer noch der Sitzung bewusst ist, es wird nur niemand sehen, die es verwenden. Die Anfrage ohne eine Sitzungs-ID wird einfach als eine unsichtbare Anfrage behandelt, die eine neue Sitzung benötigt, die möglicherweise nicht das ist, was Sie testen möchten.
Wenn Sie Black Box Test sagen, nehme ich an, dass Sie keinen Zugriff auf Code, Konfigurationsdateien oder IIS haben? :) –
Beantworten Sie die Frage des OP nicht, aber im Zusammenhang: Wenn Sie nur das Verhalten testen müssen, wenn die Zeitüberschreitung korrekt ist oder nicht, starten Sie den Server nach der Anmeldung einfach neu.Die alte Sitzung wird ungültig –