我想根据文件类型为响应添加标头。我想要做的是如果文件类型是.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请求这些文件。
答案 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中设置的设置。