2

在 HttpModule 中,我想检查 url 是否以文件结尾:

IE。www.example.com/images/images.css

以及文件扩展名是什么,即。css 或 js

在 Begin_Request 事件处理程序中,使用嵌套在 HttpApplication 中的 Request 对象的 Url 属性,我目前正在使用字符串操作切割文件扩展名。有一个更好的方法吗?

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 和 .ashx 等文件类型不同,您在示例中使用的 .js 和 .css 等文件类型默认情况下并未在 IIS 中使用 ASP.Net dll 注册,因此当它们被请求时,IIS 不会通过请求通过 ASP.Net 管道,因此不会运行 HttpModules 或 HttpHandlers。如何配置这取决于您运行的 IIS 版本。

于 2009-07-26T22:52:43.727 回答
1
        string url = context.Request.Path;
        string extension = VirtualPathUtility.GetExtension(url);
于 2013-06-01T08:19:37.767 回答
0

请看属性HttpRequest.Url。它属于System.Uri.

于 2009-07-26T21:16:37.633 回答
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 回答