2009-07-26 12 views
2

の要求であるかどうかをテストします。 www.example.com/images/images.cssHttpModuleを/のHttpApplication URLは、私はURLがファイルで終わるかどうかを確認したいHttpModuleを内のファイル

ファイルの拡張子は何ですか。 cssまたはjs

Begin_Requestイベントハンドラでは、HttpApplicationにネストされたRequestオブジェクトのUrlプロパティを使用して、現在、String操作を使用してファイル拡張子を切り詰めています。これを行うより良い方法はありますか?

答えて

4

以下のコードは、要求されたファイルの拡張子を取得します。

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 

} 

しかし、このようなあなたの例で使用しているなどの.jsや.cssファイルなどの.aspxと.ashxファイルの種類などのファイルタイプとは異なり、IIS内のASP.Netのdllに登録され、デフォルトではありませんので要求されたIISはASP.Netパイプラインを通じて要求を渡さないので、HttpModulesまたはHttpHandlersは実行されません。これをどのように構成するかは、実行しているIISのバージョンによって異なります。

0

HttpRequest.Urlのプロパティを見てください。タイプはSystem.Uriです。

+0

ご回答ありがとうございます。私はそれを見て、私はこれを行うための機能を決定することはできませんが、IsFileプロパティがありますが、それは私が探しているものではありません。 – theringostarrs

+0

もし私が間違っているなら、それを指摘してください! – theringostarrs

+0

Uri.LocalPathはパスを返します。その後、System.IO.Pathの機能を使用してそれを操作することができます。 –

0

はこのお試しください: '' Extensionは常に先導を持っていることを

// 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); 

は注意を。例えば'.css'または '.js'

1
 string url = context.Request.Path; 
     string extension = VirtualPathUtility.GetExtension(url); 
関連する問題