对于静态文件,PostMapRequestHandler期间HttpContext.Current.Handler为null

时间:2015-09-09 19:46:42

标签: c# asp.net .net

我正在编写一个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.有什么想法吗?

1 个答案:

答案 0 :(得分:0)

System.Web.StaticFileHandler在经典IIS模式下提供静态内容请求。很可能您使用的是集成的IIS模式,其中静态内容由本机模块StaticFileModule处理,因此Handler为null 要解决您的问题,有两个选项:

  1. Swtich到旧的经典模式。但你的表现会松懈
  2. 使用集成模式并自行检测静态内容。