2009-07-26 7 views
2

Innerhalb eines Httpmodule würde ich prüfen möchte, ob die URL mit einer Datei endet:Httpmodule/Httpapplication testen, ob URL eine Anforderung für eine Datei

dh. www.example.com/images/images.css

und was die Dateierweiterung ist ie. css oder js

In der Begin_Request-Ereignisbehandlungsroutine, die die Url-Eigenschaft des in der HttpApplication geschachtelten Request-Objekts verwendet, schneide ich gerade die Dateierweiterung mit String-Operationen. Gibt es einen besseren Weg, dies zu tun?

Antwort

4

Der folgende Code sollte Ihnen die Erweiterung für die angeforderte Datei liefern.

private void context_BeginRequest(object sender, EventArgs e) 
{ 
    HttpApplication application = (HttpApplication)sender; 
    HttpContext context = application.Context; 

    string ext = System.IO.Path.GetExtension(context.Request.Path); 
    // ext will always start with dot 

} 

Aber im Gegensatz zu Dateitypen wie ASPX und .ashx Dateitypen wie Js und Css, die Sie in Ihrem Beispiel verwendet haben, sind standardmäßig nicht mit dem ASP.Net-DLL in IIS registriert so, wenn sie werden angefordert IIS übergibt die Anforderung nicht über die ASP.Net-Pipeline, sodass keine HttpModules oder HttpHandlers ausgeführt werden. Wie Sie dies konfigurieren, hängt davon ab, auf welcher Version von IIS Sie ausgeführt werden.

0

Bitte beachten Sie die Eigenschaften von HttpRequest.Url. Es ist vom Typ System.Uri.

+0

Vielen Dank für Ihre Antwort. Ich habe mir das angesehen und kann dafür keine Funktionalität ermitteln, da es eine IsFile-Eigenschaft gibt, aber das ist nicht das, wonach ich suche. – theringostarrs

+0

Wenn ich falsch liege, weisen Sie bitte darauf hin! – theringostarrs

+0

Uri.LocalPath gibt den Pfad zurück. Sie sollten dann in der Lage sein, die Features von System.IO.Path zu verwenden, um das zu manipulieren. –

0

Try this:

// get the URI 
Uri MyUrl = Request.Url; 
// remove path because System.IO.Path doesn't like forward slashes 
string Filename = MyUrl.Segments[MyUrl.Segments.Length-1]; 
// Extract the extension 
string Extension = System.IO.Path.GetExtension(Filename); 

Beachten Sie, dass Extension das führende immer ''. z.B. '.css' oder '.js'

1
 string url = context.Request.Path; 
     string extension = VirtualPathUtility.GetExtension(url); 
Verwandte Themen