Heim >Backend-Entwicklung >C#.Net-Tutorial >Implementierungscode für die URL-Filterung in ASP.NET

Implementierungscode für die URL-Filterung in ASP.NET

高洛峰
高洛峰Original
2017-01-21 15:11:562262Durchsuche

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

Implementierungscode für die URL-Filterung in ASP.NET

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 der Konfigurationsdatei Web.config hinzufügen

<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!
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn