我正在编写一个http模块来应用一些缓存设置,具体取决于我们所服务的请求类型,我需要运行的代码如下所示:
if (HttpContext.Current.Handler.FullName == "System.Web.StaticFileHandler" &&
CacheBustedResourceRegex.IsMatch(request.RawUrl))
{
_log.DebugFormat("Explicitly allow caching on '{0}'. Max age is {1}",
request.RawUrl,
MaxAgeForCacheBustedResources);
response.Cache.SetCacheability(HttpCacheability.Public);
response.Cache.SetMaxAge(MaxAgeForCacheBustedResources);
}
但是,对于静态文件,HttpContext.Current.Handler始终为null。它在PostMapRequestHandler,PreRequestHandlerExecute,PostRequestHandlerExecute和events中为null。它为null的示例URL为/stylesheet/welcome.css?63577391827
。
使用aspnet 4.5 / IIS 8.有什么想法吗?
答案 0 :(得分:0)
System.Web.StaticFileHandler在经典IIS模式下提供静态内容请求。很可能您使用的是集成的IIS模式,其中静态内容由本机模块StaticFileModule处理,因此Handler为null 要解决您的问题,有两个选项: