HttpModule 内で、URL がファイルで終わるかどうかを確認したいと思います。
すなわち。www.example.com/images/images.css
そして、ファイル拡張子は何ですか。cssまたはjs
Begin_Request イベント ハンドラーでは、HttpApplication にネストされた Request オブジェクトの Url プロパティを使用して、現在、String 操作を使用してファイル拡張子を切り取っています。これを行うより良い方法はありますか?
HttpModule 内で、URL がファイルで終わるかどうかを確認したいと思います。
すなわち。www.example.com/images/images.css
そして、ファイル拡張子は何ですか。cssまたはjs
Begin_Request イベント ハンドラーでは、HttpApplication にネストされた Request オブジェクトの Url プロパティを使用して、現在、String 操作を使用してファイル拡張子を切り取っています。これを行うより良い方法はありますか?
以下のコードは、要求されたファイルの拡張子を取得するはずです。
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のバージョンによって異なります。
これを試して:
// 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」
のプロパティを見てくださいHttpRequest.Url
。型System.Uri
です 。