尽管这篇文章已经有几年了,但我想我会分享我的解决方案,这可能会节省一些人的时间。
我有一个使用 IIS 的 MVC 4 站点设置,我的目标是让 IIS 添加标头到某些文件(由位置定义),方法是使用<customHeaders>
部分。我在中的“缓存控制”值<customHeaders>
部分被附加到“cache-control: private”的末尾,由 IIS 神奇地添加。
这是因为runAllManagedModulesForAllRequests我的 web.config 中的设置设置为 true
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
</modules>
</system.webServer>
此设置导致 IIS 模块之一(我不知道是哪一个)将“缓存控制”标头附加到 IIS 请求的每个文件。
所以解决方案是将其设置为 false,并使用以下命令分别管理每个模块preCondition
每个属性。
The runAllManagedModulesForAllRequests早期版本的 MVC 需要此设置,因为没有它,无扩展路由将无法工作。此问题现已修复,更多详细信息请参见此处
http://blogs.msdn.com/b/tmarq/archive/2010/04/01/asp-net-4-0-enables-routing-of-extensionless-urls-without-impacting-static-requests.aspx http://blogs.msdn.com/b/tmarq/archive/2010/04/01/asp-net-4-0-enables-routing-of-extensionless-urls-without-impacting-static-requests.aspx
关于使用的有用阅读runAllManagedModulesForAllRequests
http://weblog.west-wind.com/posts/2012/Oct/25/Caveats-with-the-runAllManagedModulesForAllRequests-in-IIS-78 http://weblog.west-wind.com/posts/2012/Oct/25/Caveats-with-the-runAllManagedModulesForAllRequests-in-IIS-78