Das Folgende ist die Definition der Klasse.
using System; using System.Web; using System.Web.SessionState; namespace QTJZ { public class Filters : IHttpModule, IRequiresSessionState { public void Dispose() { } public void Init(HttpApplication application) { application.AcquireRequestState += new EventHandler(application_AcquireRequestState); } public void application_AcquireRequestState(object sender, EventArgs e) { HttpApplication application = sender as HttpApplication; HttpRequest request = application.Request; HttpResponse response = application.Response; string url=request.CurrentExecutionFilePath.Trim('/'); string suffix = request.CurrentExecutionFilePathExtension.Trim('.'); if (!url.Equals("Default.htm") && (suffix == "aspx" || suffix == "htm")) { object sessionObj = application.Context.Session == null ? null : application.Session["useID"]; if (sessionObj==null) { response.Redirect("~/Default.htm"); } } } } }
Um den Filtereffekt zu erzielen, muss die Filters-Klasse die IHttpMoeld-Schnittstelle implementieren. Um diese Schnittstelle zu implementieren, gibt es zwei Methoden, eine ist Dispose und die andere ist Init. Der Parameter von Init ist eine Instanz vom Typ HttpApplication. Verwenden Sie diese Instanz, um einige Ereignisse zu registrieren. Da die URL nun gefiltert ist, wird das AcquireRequestState-Ereignis registriert. Ähnliche Ereignisse werden wie folgt aufgelistet
Um die umzuleitende URL zu erhalten, können Sie das CurrentExecutionFilePath-Attribut der Anfrage verwenden und um das Suffix der angeforderten Datei zu erhalten Welche Regeln beurteilt werden sollen, hängt von der Nachfrage ab. Was ich hier mache, ist festzustellen, ob die Sitzung während der Anfrage existiert. Wenn sie nicht existiert, wird zur Anmeldeseite zurückgesprungen. Da Session verwendet wird, wird beim Öffnen der Seite eine Ausnahme ausgelöst. Die Ausnahmemeldung lautet „Der Sitzungsstatus ist in diesem Kontext nicht verfügbar.“ Nach der Implementierung der IRequiresSessionState-Schnittstelle wird keine Ausnahme ausgelöst.
Darüber hinaus müssen Sie den folgenden Code unter dem Knoten
<httpModules> <add name="filters" type="QTJZ.Filters"/> </httpModules>
Das Typattribut ist der vollständig qualifizierte Name der oben genannten Filterklasse
Weitere Artikel zum URL-Filter-Implementierungscode in ASP.NET finden Sie auf der chinesischen PHP-Website!