在 HttpModule 中,我想检查 url 是否以文件结尾:
IE。www.example.com/images/images.css
以及文件扩展名是什么,即。css 或 js
在 Begin_Request 事件处理程序中,使用嵌套在 HttpApplication 中的 Request 对象的 Url 属性,我目前正在使用字符串操作切割文件扩展名。有一个更好的方法吗?
在 HttpModule 中,我想检查 url 是否以文件结尾:
IE。www.example.com/images/images.css
以及文件扩展名是什么,即。css 或 js
在 Begin_Request 事件处理程序中,使用嵌套在 HttpApplication 中的 Request 对象的 Url 属性,我目前正在使用字符串操作切割文件扩展名。有一个更好的方法吗?
下面的代码应该为您提供所请求文件的扩展名。
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 版本。
string url = context.Request.Path;
string extension = VirtualPathUtility.GetExtension(url);
请看属性HttpRequest.Url
。它属于System.Uri
.
试试这个:
// 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”