Application_BeginRequest不显示对.js和.css文件的请求

时间:2017-04-04 15:20:42

标签: javascript css asp.net

我想根据文件类型为响应添加标头。我想要做的是如果文件类型是.js或.css,则将缓存控制头添加到响应中。出于某种原因,我没有在Application_BeginRequest中看到带有.js,.css文件类型的文件的请求。我在Application_BeginRequest中设置了一个断点并尝试查看Request.Url.LocalPath,并且没有任何请求是针对.js或.css文件的。我确信该页面链接到.js和.css。我在Chrome Dev Tool中看到了对.js和.css文件的请求,只是因为我无法在Application_BeginRequest中看到对这些文件的请求。

我还尝试过硬刷我的页面(Ctrl + F5)以确保浏览器没有从Cache请求这些文件。

1 个答案:

答案 0 :(得分:2)

这很可能是因为您没有配置.net管道,以便这些静态文件进入管道。这些静态文件很可能直接由您的网络服务器(可能是IIS)提供,对它们的请求不会进入您的asp.net请求管道。

假设您使用的是集成管道模式,您可以通过添加以下web.config来让它们进入管道。在<system.webServer><handlers>部分,您可以添加以下内容:

  <add name="js-files--use-integrated-pipeline" path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" resourceType="Unspecified" preCondition="integratedMode"/>
  <add name="css-files--use-integrated-pipeline" path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" resourceType="Unspecified" preCondition="integratedMode"/>

通过此添加,您将看到请求进入Application_BeginRequest

还有其他方法可以添加自定义标头。您可以查看可以在<system.webServer><httpProtocol><customHeaders>部分的web.config中设置的设置。