2

HttpModule 内で、URL がファイルで終わるかどうかを確認したいと思います。

すなわち。www.example.com/images/images.css

そして、ファイル拡張子は何ですか。cssまたはjs

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

4

4 に答える 4

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

}

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

于 2009-07-26T22:52:43.727 に答える
0

これを試して:

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

Extension常に先頭に「。」が付いていることに注意してください。例:「。css」または「.js」

于 2009-07-26T22:29:40.840 に答える
0

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

于 2009-07-26T21:16:37.633 に答える